home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #14 / Monster Media No. 14 (April 1996) (Monster Media, Inc.).ISO / prog_gen / inter49d.zip / INTERRUP.N < prev    next >
Text File  |  1996-02-11  |  192KB  |  4,747 lines

  1. Interrupt List, part 14 of 14
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996 Ralf Brown
  3. ----------80---------------------------------
  4. INT 80 - Q-PRO4 - ???
  5. --------r-80---------------------------------
  6. INT 80 - reserved for BASIC
  7. Note:    this vector and INT 81 through INT ED are modified but not restored by
  8.       Direct Access v4.0, and may be left dangling by other programs
  9.       written with the same version of compiled BASIC
  10. SeeAlso: INT 81"BASIC",INT 86"BASIC",INT EF"BASIC"
  11. --------E-80---------------------------------
  12. INT 80 - Phar Lap 386|DOS-Extender - RELOCATED PRINT-SCREEN
  13. Note:    the extender relocates INT 05 to here by default, but can be told to
  14.       leave INT 05 alone with the commandline (or DOSX= environment
  15.       variable) flag -PRIVEC 5
  16. SeeAlso: INT 05
  17. --------d-80---------------------------------
  18. INT 80 - BusLogic BT-946C PCI SCSI Adapter - SCRATCHPAD RAM (NOT A VECTOR!)
  19. Note:    the factory-default location for the eight bytes of scratchpad RAM
  20.       needed by the SCSI adapter is 0000h:0200h, which is interrupt
  21.       vectors 80h and 81h
  22. SeeAlso: INT 81"BusLogic"
  23. --------s-80----BL00-------------------------
  24. INT 80 - SBSIM - "STARTSND" - START SOUND ON SPECIFIED DRIVER
  25.     BL = 00h
  26.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  27. Return: AX = initialization result (see #3098)
  28. Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
  29.       which provides access to multiple drivers for the SoundBlaster
  30.       board through a single interface
  31. Range:    INT 80h to INT BFh, selected automatically
  32. Note:    the SBSIM installation check consists of testing for the signature
  33.       "SBSIM" at offset 103h in the interrupt handler's segment.
  34. SeeAlso: INT 80/BL=01h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=03h"SBSIM"
  35. SeeAlso: INT 80/BX=0000h"SBSIM"
  36.  
  37. (Table 3098)
  38. Values for SBSIM error code:
  39.  01h    busy--currently in use
  40.  02h    bad driver specified
  41.  03h    invalid function
  42.  04h    voice process already active
  43.  05h    couldn't start CT-VOICE
  44.  06h    couldn't start CTVDSK
  45.  07h    invalid SBSIM handle
  46.  08h    buffer not initialized yet
  47.  09h    bad filename
  48.  0Ah    bad file handle
  49.  0Bh    driver not started yet
  50.  0Ch    XMS driver not installed
  51.  0Dh    no free SBSIM handles
  52.  0Eh    bad file type
  53.  0Fh    couldn't free XMS block
  54.  10h    invalid source selected
  55.  11h    get pan position failed
  56.  12h    set pan position failed
  57.  13h    set volume failed
  58.  14h    couldn't start fade/pan
  59.  15h    couldn't stop fade/pan
  60.  16h    couldn't pause fade/pan
  61.  17h    not a fade/pan operation
  62.  18h    bad mode for fade/pan
  63.  19h    couldn't start fade/pan
  64.  1Ah    source not fading/panning
  65.  1Bh    FM or MIDI already playing
  66.  1Ch    bad MIDI mapper format
  67. --------s-80----BL01-------------------------
  68. INT 80 - SBSIM - "PLAYSND" - PLAY MUSIC/VOICE ON SELECTED DRIVER
  69.     BL = 01h
  70.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  71. Return: AX = result (see #3098)
  72. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=04h"SBSIM"
  73. --------s-80----BL02-------------------------
  74. INT 80 - SBSIM - "STOPSND" - STOP MUSIC/VOICE ON SELECTED DRIVER
  75.     BL = 02h
  76.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  77. Return: nothing
  78. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=01h"SBSIM",INT 80/BL=03h"SBSIM"
  79. --------s-80----BL03-------------------------
  80. INT 80 - SBSIM - "PAUSESND" - TEMPORARILY PAUSE PLAYBACK ON SELECTED DRIVER
  81.     BL = 03h
  82.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  83. Return: nothing
  84. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=04h"SBSIM"
  85. SeeAlso: INT 80/BL=05h
  86. --------s-80----BL04-------------------------
  87. INT 80 - SBSIM - "RESUMESND" - RESTART PLAYBACK ON SELECTED DRIVER
  88.     BL = 04h
  89.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  90. Return: nothing
  91. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=03h"SBSIM",INT 80/BL=05h"SBSIM"
  92. --------s-80----BL05-------------------------
  93. INT 80 - SBSIM - "GETSNDSTAT" - GET DRIVER'S STATUS
  94.     BL = 05h
  95.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  96. Return: AX = status
  97. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=01h"SBSIM",INT 80/BL=03h"SBSIM"
  98. --------s-80----BX0000-----------------------
  99. INT 80 - SoundBlaster SBFM driver - GET VERSION
  100.     BX = 0000h
  101. Return: ???
  102. Note:    SBFM installs at a free interrupt in the range 80h through BFh
  103. SeeAlso: BX=0008h"SBFM",INT 2F/AX=FBFBh
  104. --------s-80----BX0000-----------------------
  105. INT 80 - SBSIM - "QUERYVERSION" - GET VERSION
  106.     BX = 0000h
  107. Return: AX = version (AH = major, AL = minor)
  108. Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
  109.       which provides access to multiple drivers for the SoundBlaster
  110.       board through a single interface
  111. Range:    INT 80h to INT BFh, selected automatically
  112. Note:    the SBSIM installation check consists of testing for the signature
  113.       "SBSIM" at offset 103h in the interrupt handler's segment.
  114. SeeAlso: BX=0001h"SBSIM",BX=0005h"SBSIM",INT 21/AX=4402h"CTMMSYS"
  115. SeeAlso: INT 80/BL=00h"SBSIM"
  116. Index:    installation check;SBSIM|installation check;SoundBlaster
  117. --------s-80----BX0001-----------------------
  118. INT 80 - SoundBlaster SBFM driver - SET MUSIC STATUS BYTE ADDRESS
  119.     BX = 0001h
  120.     DX:AX -> music status byte
  121. SeeAlso: BX=0000h"SBFM",BX=0002h"SBFM",BX=0003h"SBFM"
  122. --------s-80----BX0001-----------------------
  123. INT 80 - SBSIM - "QUERYDRIVERS" - CHECK DRIVERS INSTALLED
  124.     BX = 0001h
  125. Return: AX = bit flags for loaded drivers (see #3099)
  126. SeeAlso: BX=0000h"SBSIM",BX=0002h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
  127.  
  128. Bitfields for SBSIM loaded drivers:
  129. Bit(s)    Description    (Table 3099)
  130.  0    FM
  131.  1    double disk-buffered voice driver (DDBV)
  132.  2    memory voice driver
  133.  3    auxiliary driver (mixer)
  134.  4    MIDI
  135. --------s-80----BX0002-----------------------
  136. INT 80 - SoundBlaster SBFM driver - SET INSTRUMENT TABLE
  137.     BX = 0002h
  138.     CX = number of instruments
  139.     DX:AX -> instrument table
  140. SeeAlso: BX=0000h"SBFM",BX=0001h"SBFM",BX=0005h"SBFM"
  141. --------s-80----BX0002-----------------------
  142. INT 80 - SBSIM - GETADDRESS" - GET SELECTED DRIVER'S ENTRY POINT
  143.     BX = 0002h
  144.     AX = driver (00h = FM,01h = DDBV,02h = memvoice,03h = mixer,04h = MIDI)
  145. Return: CF clear if successful
  146.         DX:AX -> entry point
  147.     CF set on error
  148. SeeAlso: BX=0000h"SBSIM",BX=0001h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
  149. --------s-80----BX0003-----------------------
  150. INT 80 - SoundBlaster SBFM driver - SET SYSTEM CLOCK RATE
  151.     BX = 0003h
  152.     AX = clock rate divisor (1193180 / desired frequency in Hertz)
  153.         FFFFh to restore to 18.2 Hz
  154. SeeAlso: BX=0000h"SBFM",BX=0001h"SBFM",BX=0004h"SBFM"
  155. --------s-80----BX0004-----------------------
  156. INT 80 - SoundBlaster SBFM driver - SET DRIVER CLOCK RATE
  157.     BX = 0004h
  158.     AX = driver clock rate divisor (1193180 / frequency in Hertz)
  159. Note:    default frequency is 96 Hz
  160. SeeAlso: BX=0000h"SBFM",BX=0003h"SBFM"
  161. --------s-80----BX0005-----------------------
  162. INT 80 - SoundBlaster SBFM driver - TRANSPOSE MUSIC
  163.     BX = 0005h
  164.     AX = semi-tone offset
  165. SeeAlso: BX=0000h"SBFM",BX=0002h"SBFM",BX=0006h"SBFM"
  166. --------s-80----BX0005-----------------------
  167. INT 80 - SBSIM - "GETBUFFERINFO" - GET DRIVER'S BUFFER ADDRESS
  168.     BX = 0005h
  169.     AX = driver (00h = FM, 01h = DDB Voice, 04h = MIDI)
  170. Return: CF clear if successful
  171.         DX:AX -> buffer
  172.         CX = buffer size in K
  173.     CF set on error
  174. Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
  175.       which provides access to multiple drivers for the SoundBlaster
  176.       board through a single interface
  177. Range:    INT 80h to INT BFh, selected automatically
  178. Note:    the SBSIM installation check consists of testing for the signature
  179.       "SBSIM" at offset 103h in the interrupt handler's segment.
  180. SeeAlso: BX=0000h"SBSIM",BX=0001h"SBSIM",BX=0002h"SBSIM",INT 80/BL=00h"SBSIM"
  181. --------s-80----BX0006-----------------------
  182. INT 80 - SoundBlaster SBFM driver - PLAY MUSIC
  183.     BX = 0006h
  184.     DX:AX -> music block
  185. Return: AX = status
  186.         0000h successful
  187.         0001h music already active
  188. SeeAlso: BX=0000h"SBFM",BX=0007h"SBFM",BX=000Ah"SBFM",INT 1A/AX=FF04h
  189. --------s-80----BX0007-----------------------
  190. INT 80 - SoundBlaster SBFM driver - STOP MUSIC
  191.     BX = 0007h
  192. Return: AX = status
  193.         0000h successful
  194.         0001h music not active
  195. SeeAlso: BX=0000h"SBFM",BX=0006h"SBFM",BX=0009h"SBFM",INT 1A/AX=FF05h
  196. --------s-80----BX0008-----------------------
  197. INT 80 - SoundBlaster SBFM driver - RESET DRIVER
  198.     BX = 0008h
  199. Return: AX = status
  200.         0000h successful
  201.         0001h music is active
  202. SeeAlso: BX=0000h"SBFM"
  203. --------s-80----BX0009-----------------------
  204. INT 80 - SoundBlaster SBFM driver - PAUSE MUSIC
  205.     BX = 0009h
  206. Return: AX = status
  207.         0000h successful
  208.         0001h no music active
  209. SeeAlso: BX=0000h"SBFM",BX=0007h"SBFM",BX=000Ah"SBFM",INT 1A/AX=FF01h
  210. --------s-80----BX000A-----------------------
  211. INT 80 - SoundBlaster SBFM driver - RESUME MUSIC
  212.     BX = 000Ah
  213. Return: AX = status
  214.         0000h successful
  215.         0001h no music paused
  216. SeeAlso: BX=0000h"SBFM",BX=0006h"SBFM",BX=0009h"SBFM"
  217. --------s-80----BX000B-----------------------
  218. INT 80 - SoundBlaster SBFM driver - SET USER-DEF TRAP FOR SYSTEM-EXCLUSIVE CMDS
  219.     BX = 000Bh
  220.     DX:AX -> trap routine
  221. SeeAlso: BX=0000h"SBFM"
  222. --------s-80----BX0400-----------------------
  223. INT 80 - SBSIM - "GETVOLUME" - GET SOURCE'S VOLUME
  224.     BX = 0400h
  225.     AX = sound source (see #3100)
  226. Return: CF clear if successful
  227.         AX = volume
  228.     CF set on error
  229.         AX = error code (see #3098 at INT 80/BL=00h)
  230. SeeAlso: BX=0401h"SBSIM"
  231.  
  232. (Table 3100)
  233. Values for SBSIM sound source:
  234.  00h    master volume
  235.  01h    voice
  236.  02h    FM
  237.  03h    CD
  238.  04h    line in
  239.  05h    microphone
  240. --------s-80----BX0401-----------------------
  241. INT 80 - SBSIM - "SETVOLUME" - SET SOURCE'S VOLUME
  242.     BX = 0401h
  243.     AX = sound source (see #3100)
  244.     DX = new volume
  245. Return: AX = result (0000h = success) (see also INT 80/BL=00h)
  246. SeeAlso: BX=0400h"SBSIM"
  247. --------N-8001-------------------------------
  248. INT 80 - QPC Software PKTINT.COM - INITIALIZE
  249.     AH = 01h
  250. Return: AX = 0000h
  251.     CX = FFFFh
  252.     DX = FFFFh
  253. Notes:    this interrupt is the WinQVTNet protected mode interface to Windows 3.0
  254.     all buffer pointers are reset back to 0
  255. --------N-8002-------------------------------
  256. INT 80 - QPC Software PKTINT.COM - GET BUFFER ADDRESSES
  257.     AH = 02h
  258.     BX = extra bytes to allocate per packet
  259. Return: AX = segment address of 10K buffer (for receives???)
  260.     BX = segment address of 2K buffer (for sends???)
  261. SeeAlso: AH=05h
  262. --------N-8003-------------------------------
  263. INT 80 - QPC Software PKTINT.COM - GET ENTRY POINT
  264.     AH = 03h
  265. Return: CX:DX -> receive call address
  266. Note:    the returned address can be used in the packet driver calls since it
  267.       will be a valid address in all DOS boxes
  268. SeeAlso: AH=06h
  269. --------N-8004-------------------------------
  270. INT 80 - QPC Software PKTINT.COM - ENABLE???
  271.     AH = 04h
  272.     BX = ???
  273. Return: ???
  274. SeeAlso: AH=01h
  275. --------N-8005-------------------------------
  276. INT 80 - QPC Software PKTINT.COM - GET RECEIVE STATISTICS
  277.     AH = 05h
  278. Return: AX = amount of buffer currently in use
  279.     BX = current offset in buffer
  280.     CX = number of times receive has been called
  281. SeeAlso: AH=02h
  282. --------N-8006-------------------------------
  283. INT 80 - QPC Software PKTINT.COM - REMOVE RECEIVED PACKET
  284.     AH = 06h
  285. Return: BX = next packet offset
  286.     CX = number of bytes still buffered
  287.     DX = size of packet released back into buffer pool
  288. SeeAlso: AH=03h
  289. --------r-81---------------------------------
  290. INT 81 - reserved for BASIC
  291. Note:    this vector is modified but not restored by Direct Access v4.0, and
  292.       may be left dangling by other programs written with the same version
  293.       of compiled BASIC
  294. SeeAlso: INT 80"BASIC",INT 82"BASIC"
  295. --------N-81---------------------------------
  296. INT 81 - IBM TOKEN RING ADAPTER - ???
  297. SeeAlso: INT 82"TOKEN RING",INT 91"TOKEN RING"
  298. --------d-81---------------------------------
  299. INT 81 - BusLogic BT-946C PCI SCSI Adapter - SCRATCHPAD RAM (NOT A VECTOR!)
  300. Note:    the factory-default location for the eight bytes of scratchpad RAM
  301.       needed by the SCSI adapter is 0000h:0200h, which is interrupt
  302.       vectors 80h and 81h
  303. SeeAlso: INT 80"BusLogic"
  304. --------b-81---------------------------------
  305. INT 81 - AMI WinBIOS - SECOND HARD DRIVE AUTODETECTION
  306. Notes:    used by WinBIOS with core version of July 1994 or later
  307.     QEMM 7.5 began using this interrupt internally after the QPAT3
  308.       maintenance release when searching for "ROM holes", causing a
  309.       lengthy delay during bootup.    Adding the QEMM parameter RH:N will
  310.       avoid the QEMM call to INT 81 and speed up the boot process
  311. --------s-810200---------------------------
  312. INT 81 - Gravis UltraSound - MegaEm - PROCESS COMMAND LINE
  313.     AX = 0200h
  314.     BX = PSP segment
  315.     SI = ??? (data area)
  316. Return:    AX = status (see #3101)
  317.     BL = emulation state
  318.         bit 1   Emulation is on
  319.         bit 2   Emulation is off
  320. Program: MegaEm is a protected-mode SoundBlaster, SoundCanvas, and MT-32
  321.       emulator for the Gravis UltraSound
  322. Range:    INT ??? to INT ??? (see INT 21/AX=FD12h)
  323. SeeAlso: AX=0202h,AX=0300h,AX=0400h,INT 21/AX=FD12h/BX=3457h
  324.  
  325. (Table 3101)
  326. Values for MegaEm status:
  327.  0000h    successful
  328.  0001h    invalid command line optie
  329.  0002h    display options
  330.  0003h    ???
  331.  0004h    invalid number of voices specified
  332.  0005h    could not load enough patches to provide acceptable emulation
  333.  0006h    to many warnings on patch loading
  334.  0007h    ??? (not used anymore)
  335.  0008h    /CO and SCSI don't work together
  336.  0009h    invalid music volume
  337.  000Ah    invalid master volume
  338.  000Bh    /SC switch is no longer valid
  339.  0100h    ??? (some error on patch loading)
  340. --------s-810202---------------------------
  341. INT 81 - Gravis UltraSound - MegaEm - ???
  342.     AX = 0202h
  343. Return:    AX = ???
  344. SeeAlso: AX=0200h,AX=0300h,AX=0400h,INT 21/AX=FD12h/BX=3457h
  345. --------s-810300---------------------------
  346. INT 81 - Gravis UltraSound - MegaEm - LOAD SAMPLE ???
  347.     AX = 0300h
  348. Return:    AX = ???
  349. SeeAlso: AX=0200h,AX=0202h,AX=0400h,INT 21/AX=FD12h/BX=3457h
  350. --------s-810400---------------------------
  351. INT 81 - Gravis UltraSound - MegaEm - ???
  352.     AX = 0400h
  353.     BX = ??? (segment)
  354. Return:    AX = ???
  355.     BX = ???
  356. Program: MegaEm is a protected-mode SoundBlaster, SoundCanvas, and MT-32
  357.       emulator for the Gravis UltraSound
  358. SeeAlso: AX=0200h,AX=0202h,AX=0300h,INT 21/AX=FD12h/BX=3457h
  359. --------s-812010------------------------
  360. INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - ???
  361.     AX = 2010h
  362.     ???
  363. Return: ???
  364. --------s-812011------------------------
  365. INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - ???
  366.     AX = 2011h
  367.     ???
  368. Return: ???
  369. --------s-812012------------------------
  370. INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - ???
  371.     AX = 2012h
  372.     ???
  373. Return: ???
  374. --------s-812015------------------------
  375. INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - ???
  376.     AX = 2015h
  377.     ???
  378. Return: ???
  379. --------r-82---------------------------------
  380. INT 82 - reserved for BASIC
  381. SeeAlso: INT 81"BASIC",INT 83"BASIC"
  382. --------N-82---------------------------------
  383. INT 82 - IBM TOKEN RING ADAPTER - ???
  384.     AH = function
  385.         00h display message???
  386.         DS:BX -> string
  387.     ???
  388. Return: ???
  389. SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
  390. --------r-83---------------------------------
  391. INT 83 - reserved for BASIC
  392. SeeAlso: INT 82"BASIC",INT 84"BASIC"
  393. --------s-8300-------------------------------
  394. INT 83 - JM Pro Tracker v5.0 - ???
  395.     AH = 00h
  396.     ???
  397. Return: CF clear (successful)
  398.     AX = ??? (0302h)
  399. Program: JM Pro Tracker is a public-domain resident .MOD (digital music)
  400.       player by Josha Munnik
  401.  
  402. (Table 3102)
  403. Values for JM Pro Tracker error code:
  404.  000Ah    ???
  405.  000Bh    ???
  406.  0014h    ???
  407.  001Eh    some required parameters have not yet been set
  408.  001Fh    already playing???
  409.  FExxh    busy (API call already in progress)
  410.  FFxxh    invalid function number
  411. --------s-8301-------------------------------
  412. INT 83 - JM Pro Tracker v5.0 - ???
  413.     AH = 01h
  414.     DX = ??? or FFFFh
  415.     ???
  416. Return: CF clear if successful
  417.     CF set on error
  418.         AX = error code (see #3102)
  419. --------s-8302-------------------------------
  420. INT 83 - JM Pro Tracker v5.0 - ???
  421.     AH = 02h
  422.     BX = ???
  423.     ???
  424. Return: CF clear if successful
  425.         AX = ???
  426.         BX = ???
  427.         CX = ???
  428.         DX = ???
  429.         SI = ???
  430.     CF set on error
  431.         AX = error code (000Ah,000Bh,other) (see #3102)
  432. --------s-8303-------------------------------
  433. INT 83 - JM Pro Tracker v5.0 - ???
  434.     AH = 03h
  435.     BX = ??? (only low four bits, must be nonzero)
  436.     CX = ???
  437.     ???
  438. Return: CF clear if successful
  439.     CF set on error
  440.         AX = error code (0014h) (see #3102)
  441. --------s-8304-------------------------------
  442. INT 83 - JM Pro Tracker v5.0 - SET DMA BUFFER???
  443.     AH = 04h
  444.     CX = number of bytes in suggested buffer
  445.     ES:DI -> suggested buffer for DMA transfers???
  446. Return: CF clear if successful
  447.         ES:AX -> actual buffer (filled with bytes of 80h)
  448.         CX = actual length (multiple of 4)
  449.     CF set on error
  450.         AX = error code (see #3102)
  451. Note:    the buffer must not cross a 64K DMA page boundary
  452. --------s-8305-------------------------------
  453. INT 83 - JM Pro Tracker v5.0 - SET ??? BUFFER
  454.     AH = 05h
  455.     CX = length of buffer
  456.     ES:DI -> buffer for/containing ???
  457. Return: CF clear (successful)
  458. SeeAlso: AH=06h,AH=07h,AH=18h
  459. --------s-8306-------------------------------
  460. INT 83 - JM Pro Tracker v5.0 - SET ??? BUFFER
  461.     AH = 06h
  462.     CX = length of buffer
  463.     ES:DI -> buffer for/containing ???
  464. Return: CF clear (successful)
  465. SeeAlso: AH=05h,AH=07h,AH=18h
  466. --------s-8307-------------------------------
  467. INT 83 - JM Pro Tracker v5.0 - SET ??? BUFFER
  468.     AH = 07h
  469.     BX = ???
  470.     CX = length of buffer
  471.     ES:DI -> buffer for/containing ???
  472. Return: CF clear (successful)
  473. SeeAlso: AH=05h,AH=06h,AH=18h
  474. --------s-8308-------------------------------
  475. INT 83 - JM Pro Tracker v5.0 - START PLAYING???
  476.     AH = 08h
  477.     ???
  478. Return: CF clear if successful
  479.        ???
  480.     CF set on error
  481.         AX = error code (001Eh,001Fh) (see #3102)
  482. SeeAlso: AH=09h,AH=0Ah
  483. --------s-8309-------------------------------
  484. INT 83 - JM Pro Tracker v5.0 - PAUSE???
  485.     AH = 09h
  486.     ???
  487. Return: CF clear if successful
  488.     CF set on error
  489.         AX = error code (see #3102)
  490. SeeAlso: AH=08h,AH=0Ah
  491. --------s-830A-------------------------------
  492. INT 83 - JM Pro Tracker v5.0 - RESUME???
  493.     AH = 0Ah
  494.     ???
  495. Return: CF clear if successful
  496.     CF set on error
  497.         AX = error code (001Fh) (see #3102)
  498. SeeAlso: AH=08h,AH=09h
  499. --------s-830B-------------------------------
  500. INT 83 - JM Pro Tracker v5.0 - ???
  501.     AH = 0Bh
  502.     BX = ???
  503.     ???
  504. Return: CF clear if successful
  505.     CF set on error
  506. --------s-830C-------------------------------
  507. INT 83 - JM Pro Tracker v5.0 - ???
  508.     AH = 0Ch
  509.     DX bit 5 = ???
  510.     ???
  511. Return: CF clear if successful
  512.         BX = ??? (FFFFh)
  513.         CX = ??? (0000h)
  514.         DX = ???
  515.     CF set on error
  516.         AX = error code (see #3102)
  517. --------s-830D-------------------------------
  518. INT 83 - JM Pro Tracker v5.0 - ???
  519.     AH = 0Dh
  520.     BX = ???
  521.     ???
  522. Return: CF clear (successful)
  523. --------s-830E-------------------------------
  524. INT 83 - JM Pro Tracker v5.0 - ???
  525.     AH = 0Eh
  526.     BX = ??? (ignored if ES:DI = 0000h:0000h)
  527.     ES:DI -> ??? or 0000h:0000h
  528. Return: CF clear (successful)
  529. --------s-830F-------------------------------
  530. INT 83 - JM Pro Tracker v5.0 - ???
  531.     AH = 0Fh
  532.     ???
  533. Return: CF clear if successful
  534.         AX = ???
  535.     CF set on error
  536.         AX = error code (see #3102)
  537. --------s-8310-------------------------------
  538. INT 83 - JM Pro Tracker v5.0 - ???
  539.     AH = 10h
  540.     BL = subfunction???
  541.     CX = ???
  542.     DX = ???
  543.     ???
  544. Return: CF clear if successful
  545.         CX = DX = ???
  546.     CF set on error
  547.         AX = error code (see #3102)
  548. SeeAlso: AH=18h
  549. --------s-8311-------------------------------
  550. INT 83 - JM Pro Tracker v5.0 - ???
  551.     AH = 11h
  552.     BL = ???
  553.     CX = ???
  554. Return: CF clear (successful)
  555. --------s-8312-------------------------------
  556. INT 83 - JM Pro Tracker v5.0 - CLEAR ???
  557.     AH = 12h
  558. Return: nothing
  559. --------s-8313-------------------------------
  560. INT 83 - JM Pro Tracker v5.0 - ???
  561.     AH = 13h
  562.     BX = ???
  563. Return: CF clear (successful)
  564. --------s-8314-------------------------------
  565. INT 83 - JM Pro Tracker v5.0 - ???
  566.     AH = 14h
  567.     ???
  568. Return: CF clear (successful)
  569.     BX = ???
  570. --------s-8315-------------------------------
  571. INT 83 - JM Pro Tracker v5.0 - GET ???
  572.     AH = 15h
  573.     BX = what to get (zero/nonzero)
  574. Return: CF clear if successful
  575.         BX = ???
  576.         DX = ???
  577.     CF set on error
  578.         AX = error code (see #3102)
  579. --------s-8316-------------------------------
  580. INT 83 - JM Pro Tracker v5.0 - ???
  581.     AH = 16h
  582.     AL = subfunction
  583.         00h ???
  584.         Return: BX = ???
  585.             CX = ???
  586.             DX = ???
  587.             ES:DI -> ???
  588.             CF indicates ???
  589.         01h ???
  590.         Return: BX = ???
  591.             CX = ???
  592.             DX = ???
  593. Return: CF clear if successful
  594.     CF set on error
  595.         AX = error code (FFxxh) (see #3102)
  596. --------s-8317-------------------------------
  597. INT 83 - JM Pro Tracker v5.0 - UNHOOK API INTERRUPT
  598.     AH = 17h
  599. Return: CF clear if successful
  600.     CF set on error (hooked by another program)
  601. --------s-8318-------------------------------
  602. INT 83 - JM Pro Tracker v5.0 - SET BUFFERS
  603.     AH = 18h
  604.     ES:DI -> buffer-pointer structure (see #3103)
  605. Return: nothing
  606. SeeAlso: AH=05h,AH=06h,AH=07h,AH=10h
  607.  
  608. Format of JM Pro Tracker buffer-pointer structure:
  609. Offset    Size    Description    (Table 3103)
  610.  00h    WORD    length of ??? buffer (see AH=05h)
  611.  02h    DWORD    -> ??? buffer (see AH=05h)
  612.  06h    WORD    length of ??? buffer (see AH=06h)
  613.  08h    DWORD    -> ??? buffer (see AH=06h)
  614.  0Ch    WORD    length of ??? buffer (see AH=07h)
  615.  0Eh    DWORD    -> ??? buffer (see AH=07h)
  616.  12h    WORD    ??? (see AH=07h)
  617.  14h    WORD    ??? (see AH=10h) (subfunction 01h)
  618.  16h    WORD    ??? (see AH=10h) (subfunction 01h)
  619.  18h    WORD    ??? (see AH=10h) (subfunction 00h)
  620.  1Ah    WORD    ??? (see AH=10h) (subfunction 01h)
  621. --------r-84---------------------------------
  622. INT 84 - reserved for BASIC
  623. SeeAlso: INT 83"BASIC",INT 85"BASIC"
  624. --------r-85---------------------------------
  625. INT 85 - reserved for BASIC
  626. Note:    INT 80 through INT ED are modified but not restored by Direct Access
  627.       v4.0, and may be left dangling by other programs written with the
  628.       same version of compiled BASIC
  629. SeeAlso: INT 84"BASIC",INT 86"BASIC"
  630. --------N-86---------------------------------
  631. INT 86 - NetBIOS - ORIGINAL INT 18
  632. Note:    some implementations of NetBIOS reportedly relocate INT 18 here
  633. SeeAlso: INT 18
  634. --------r-86---------------------------------
  635. INT 86 - IBM ROM BASIC - used while in interpreter
  636. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  637.     BASIC.COM/BASICA.COM do not restore vector on termination
  638. SeeAlso: INT 85"BASIC",INT 87"BASIC"
  639. --------r-86---------------------------------
  640. INT 86 - APL*PLUS/PC - Terminate APL session and return to DOS
  641. SeeAlso: INT 21/AH=4Ch,INT 87"APL"
  642. --------r-87---------------------------------
  643. INT 87 - IBM ROM BASIC - used while in interpreter
  644. Notes:    called by ROM BASIC
  645.     BASIC.COM/BASICA.COM do not restore vector on termination
  646. SeeAlso: INT 86"BASIC",INT 88"BASIC"
  647. --------r-87---------------------------------
  648. INT 87 - APL*PLUS/PC - ???
  649. SeeAlso: INT 86"APL",INT 88/AL=00h
  650. --------v-87---------------------------------
  651. INT 87 - VIRUS - "ZeroHunt" - VIRAL CODE (NOT A VECTOR!)
  652. Note:    the ZeroHunt virus copies its resident code down to 0000h:021Ch and
  653.       following
  654. SeeAlso: INT 8B"VIRUS"
  655. --------r-88---------------------------------
  656. INT 88 - IBM ROM BASIC - used while in interpreter
  657. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  658.     BASIC.COM/BASICA.COM do not restore vector on termination
  659. SeeAlso: INT 87"BASIC",INT 89"BASIC"
  660. --------r-88--00-----------------------------
  661. INT 88 - APL*PLUS/PC - CREATE OBJECT OF ARBITRARY RANK OR SHAPE
  662.     AL = 00h
  663.     BX = STPTR of the variable to be assigned
  664.     ES:SI -> model of type, rank, and shape (see #3104)
  665. Return: ES:DI -> first data byte of object
  666.     DX:CX = number of elements in the object
  667. SeeAlso: INT C8"APL"
  668.  
  669. Format of APL*PLUS/PC shape model:
  670. Offset    Size    Description    (Table 3104)
  671.  00h    BYTE    type
  672.         01h character (2-byte dimension sizes)
  673.         02h integer (2-byte dimension sizes)
  674.         08h floating point (2-byte dimension sizes)
  675.         11h character (4-byte dimension sizes)
  676.         12h integer (4-byte dimension sizes)
  677.         18h floating point (4-byte dimension sizes)
  678.  01h    BYTE    rank
  679.  02h    (D)WORD first dimension of shape
  680.  N    (D)WORD second dimension of shape
  681.     ...
  682. --------r-88--01-----------------------------
  683. INT 88 - APL*PLUS/PC - CREATE CHARACTER SCALAR/VECTOR/MATRIX <64K IN SIZE
  684.     AL = 01h
  685.     AH = rank
  686.     BX = STPTR of the variable to be assigned
  687.     CX = first dimension (if any)
  688.     DX = second dimension (if any)
  689. Return: ES:DI -> object
  690.     CX = number of elements in the object
  691. Note:    each dimension must be 32767 or smaller
  692. SeeAlso: AL=02h,AL=08h,INT C8"APL"
  693. --------r-88--02-----------------------------
  694. INT 88 - APL*PLUS/PC - CREATE INTEGER SCALAR/VECTOR/MATRIX <64K IN SIZE
  695.     AL = 02h
  696.     AH = rank
  697.     BX = STPTR of the variable to be assigned
  698.     CX = first dimension (if any)
  699.     DX = second dimension (if any)
  700. Return: ES:DI -> object
  701.     CX = number of elements in the object
  702. Note:    each dimension must be 32767 or smaller
  703. SeeAlso: AL=01h,AL=08h,INT C8"APL"
  704. --------r-88--08-----------------------------
  705. INT 88 - APL*PLUS/PC - CREATE FLOATING POINT SCALAR/VECTOR/MATRIX <64K IN SIZE
  706.     AL = 08h
  707.     AH = rank
  708.     BX = STPTR of the variable to be assigned
  709.     CX = first dimension (if any)
  710.     DX = second dimension (if any)
  711. Return: ES:DI -> object
  712.     CX = number of elements in the object
  713. Note:    each dimension must be 32767 or smaller
  714. SeeAlso: AL=01h,AL=02h,INT C8"APL"
  715. --------r-88--F5-----------------------------
  716. INT 88 - APL*PLUS/PC - FORCE OBJECT INTO REAL WORKSPACE FROM VIRTUAL
  717.     AL = F5h
  718.     BX = STPTR of object
  719. SeeAlso: INT C8"APL"
  720. --------r-88--F6-----------------------------
  721. INT 88 - APL*PLUS/PC - MAKE NAME IMMUNE FROM OUTSWAPPING
  722.     AL = F6h
  723.     BX = STPTR of object
  724. SeeAlso: AL=F7h,AL=F8h,INT C8"APL"
  725. --------r-88--F7-----------------------------
  726. INT 88 - APL*PLUS/PC - MAKE NAME ELIGIBLE FOR OUTSWAPPING
  727.     AL = F7h
  728.     BX = STPTR of object
  729. SeeAlso: AL=F6h,AL=F8h,INT C8"APL"
  730. --------r-88--F8-----------------------------
  731. INT 88 - APL*PLUS/PC - REPORT WHETHER NAME IS ELIGIBLE FOR OUTSWAPPING
  732.     AL = F8h
  733.     BX = STPTR of object
  734. Return: BX = name's outswapping status
  735.         0000h eligible
  736.         0001h not eligible
  737. SeeAlso: AL=F6h,AL=F7h,INT C8"APL"
  738. --------r-88--F9-----------------------------
  739. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  740.     AL = F9h
  741.     ES:SI -> name
  742.     CX = length of name
  743. Return: CF set if name ill-formed or already in use
  744.         BX = STPTR if already in symbol table
  745.     CF clear if name is available for use
  746.         BX = 0000h
  747. Note:    does not force the name into the workspace
  748. SeeAlso: AL=FEh,AL=FFh,INT C8"APL"
  749. --------r-88--FC-----------------------------
  750. INT 88 - APL*PLUS/PC - DETERMINE IF MEMORY AVAIL WITHOUT GARBAGE COLLECTION
  751.     AL = FCh
  752.     BX = amount of memory needed (paragraphs)
  753. Return: CF clear if memory available
  754.     CF set if a workspace compaction is required
  755. SeeAlso: AL=FDh,INT C8"APL"
  756. --------r-88--FD-----------------------------
  757. INT 88 - APL*PLUS/PC - PERFORM GARBAGE COLLECTION AND RETURN AVAILABLE MEMORY
  758.     AL = FDh
  759. Return: BX = number of paragraphs available in workspace
  760. SeeAlso: AL=FCh,INT C8"APL"
  761. --------r-88--FE-----------------------------
  762. INT 88 - APL*PLUS/PC - CREATE NAME
  763.     AL = FEh
  764.     ES:SI -> name
  765.     CX = length of name
  766. Return: BX = STPTR of name
  767.     DX = interpreter's data segment
  768. SeeAlso: AL=F9h,AL=FFh,INT C8"APL"
  769. --------r-88--FF-----------------------------
  770. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  771.     AL = FFh
  772.     ES:SI -> name
  773.     CX = length of name
  774. Return: CF set if name ill-formed or already in use
  775.         BX = STPTR if already in symbol table
  776.     CF clear if name is available for use
  777.         BX = 0000h
  778. Note:    forces the name into the workspace and makes it immune from outswapping
  779. SeeAlso: AL=F9h,AL=FEh,INT C8"APL"
  780. --------r-89---------------------------------
  781. INT 89 - IBM ROM BASIC - used while in interpreter
  782. Notes:    called by ROM BASIC
  783.     BASIC.COM/BASICA.COM do not restore vector on termination
  784. SeeAlso: INT 88"BASIC",INT 8A"BASIC"
  785. --------r-8A---------------------------------
  786. INT 8A - IBM ROM BASIC - used while in interpreter
  787. Notes:    called by ROM BASIC
  788.     BASIC.COM/BASICA.COM do not restore vector on termination
  789. SeeAlso: INT 89"BASIC",INT 8B"BASIC"
  790. --------r-8A---------------------------------
  791. INT 8A - APL*PLUS/PC - PRINT SCREEN
  792. Note:    same as INT 05
  793. SeeAlso: INT 05,INT 8C"APL",INT CA"APL"
  794. --------r-8B---------------------------------
  795. INT 8B - IBM ROM BASIC - used while in interpreter
  796. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  797.     BASIC.COM/BASICA.COM do not restore vector on termination
  798. SeeAlso: INT 8A"BASIC",INT 8C"BASIC"
  799. --------r-8B---------------------------------
  800. INT 8B - APL*PLUS/PC - BEEP
  801. Note:    same as printing a ^G via INT 21/AH=02h
  802. SeeAlso: INT 21/AH=02h,INT CB"APL"
  803. --------v-8B---------------------------------
  804. INT 8B - VIRUS - "ZeroHunt" - INSTALLATION CHECK (NOT A VECTOR!)
  805. Note:    if the ZeroHunt virus is resident, this vector will contain either
  806.       EE83h:019Bh (ZH-411) or EE83h:019Fh (ZH-415)
  807. SeeAlso: INT 70"VIRUS",INT 87"VIRUS",INT 9C"VIRUS"
  808. --------r-8C---------------------------------
  809. INT 8C - IBM ROM BASIC - used while in interpreter
  810. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  811.     BASIC.COM/BASICA.COM do not restore vector on termination
  812. --------r-8C---------------------------------
  813. INT 8C - APL*PLUS/PC - CLEAR SCREEN MEMORY
  814.     AX = flag
  815.         0000h do not save display attributes
  816.         0001h save attributes
  817. SeeAlso: INT CC"APL"
  818. --------r-8D---------------------------------
  819. INT 8D - IBM ROM BASIC - used while in interpreter
  820. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  821.     BASIC.COM/BASICA.COM do not restore vector on termination
  822. --------r-8E---------------------------------
  823. INT 8E - IBM ROM BASIC - used while in interpreter
  824. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  825.     BASIC.COM/BASICA.COM do not restore vector on termination
  826. --------r-8F---------------------------------
  827. INT 8F - IBM ROM BASIC - used while in interpreter
  828. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  829.     BASIC.COM/BASICA.COM do not restore vector on termination
  830. --------r-90---------------------------------
  831. INT 90 - IBM ROM BASIC - used while in interpreter
  832. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  833.     BASIC.COM/BASICA.COM do not restore vector on termination
  834. --------r-90---------------------------------
  835. INT 90 - APL*PLUS/PC - USED BY PORT 10 PRINTER DRIVER
  836. --------r-91---------------------------------
  837. INT 91 - IBM ROM BASIC - used while in interpreter
  838. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  839.     BASIC.COM/BASICA.COM do not restore vector on termination
  840. --------N-91---------------------------------
  841. INT 91 - IBM TOKEN RING ADAPTER - ???
  842. SeeAlso: INT 81"TOKEN RING",INT 82"TOKEN RING",INT 93"TOKEN RING"
  843. --------r-92---------------------------------
  844. INT 92 - IBM ROM BASIC - used while in interpreter
  845. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  846.     BASIC.COM/BASICA.COM do not restore vector on termination
  847. --------N-92---------------------------------
  848. INT 92 - Sangoma X.25 INTERFACE PROGRAM
  849.     BX:DX -> control block
  850. SeeAlso: INT 68"Sangoma"
  851. --------e-92E1-------------------------------
  852. INT 92 - Da Vinci eMail Dispatcher INTERFACE
  853.     AH = E1h
  854.     AL = function
  855.     BX = stack count (number of words to push)
  856.     CX:DX -> stack data (in word-reversed order ready to push)
  857. Return: AX = status (see #3105)
  858. Note:    preserves BP, DS, SI, DI; other registers may be destroyed
  859.  
  860. (Table 3105)
  861. Values for Da Vinci eMail function status:
  862.  0001h    success
  863.  FF97h    "ERS_NOT_AVAILABLE"
  864.  FF99h    "ERS_TOO_MANY_NAMES"
  865.  FF9Ah    "ERS_BAD_NAME_PASSWORD"
  866.  FFE3h    "ERS_NAME_NOT_FOUND"
  867.  FFF8h    "ERS_USE_STRING" (call NetGetError to get error string)
  868.  FFFFh    "ERS_NO_SUCH_FILE"
  869. --------e-92E100-----------------------------
  870. INT 92 - Da Vinci eMail Dispatcher - "NetInitStart"
  871.     AX = E100h
  872.     BX = size of parameter block in words (000Ah)
  873.     CX:DX -> parameter block (see #3106)
  874. Return: AX = 0001h success
  875. Desc:    this function is used to initialize the dispatcher
  876. SeeAlso: AX=E101h,AX=E103h
  877.  
  878. Format of Da Vinci eMail "NetInitStart" parameter block:
  879. Offset    Size    Description    (Table 3106)
  880.  00h    WORD    segment of ???
  881.  02h    WORD    offset of ???
  882.  04h    WORD    high part of long ???
  883.  06h    WORD    low part of long ???
  884.  08h    WORD    high part of long ???
  885.  0Ah    WORD    low part of long ???
  886.  0Ch    WORD    high part of long ???
  887.  0Eh    WORD    low part of long ???
  888.  10h    WORD    high part of long ???
  889.  12h    WORD    low part of long ???
  890. --------e-92E101BX0000-----------------------
  891. INT 92 - Da Vinci eMail Dispatcher - "NetInitCheck"
  892.     AX = E101h
  893.     BX = 0000h
  894.     CX:DX ignored
  895. Return: AX = 0001h success
  896. SeeAlso: AX=E100h,AX=E180h
  897. --------e-92E102BX0000-----------------------
  898. INT 92 - Da Vinci eMail Dispatcher - "NetCheckDriver"
  899.     AX = E102h
  900.     BX = 0000h
  901.     CX:DX ignored
  902. Return: AX = 0001h success
  903. Desc:    this function is used to determine if the dispatcher is loaded
  904. SeeAlso: AX=E10Bh,AX=E180h
  905. --------e-92E103BX0000-----------------------
  906. INT 92 - Da Vinci eMail Dispatcher - "NetTerminate"
  907.     AX = E103h
  908.     BX = 0000h
  909.     CX:DX ignored
  910. Return: AX = status (see #3105)
  911. SeeAlso: AX=E100h
  912. --------e-92E104-----------------------------
  913. INT 92 - Da Vinci eMail Dispatcher - "NetWhereIs"
  914.     AX = E104h
  915.     BX = size of parameter block in words (0006h)
  916.     CX:DX -> parameter block (see #3107)
  917. Return: AX = status (see #3105)
  918. Desc:    this function is used to verify node address for usernames
  919. SeeAlso: AX=E180h
  920.  
  921. Format of Da Vinci eMail "NetWhereIs" parameter block:
  922. Offset    Size    Description    (Table 3107)
  923.  00h    WORD    segment of node address buffer
  924.  02h    WORD    offset of node address buffer
  925.  04h    WORD    segment of uppercase username
  926.  06h    WORD    offset of uppercase username
  927.  08h    WORD    segment of "DVSEMAIL"
  928.  0Ah    WORD    offset of "DVSEMAIL"
  929. --------e-92E105-----------------------------
  930. INT 92 - Da Vinci eMail Dispatcher - "NetOpen"
  931.     AX = E105h
  932.     BX = size of parameter block in words (0007h)
  933.     CX:DX -> parameter block (see #3108)
  934. Return: AX = 0000h Error
  935.     AX = handle
  936. Desc:    this function is used to open a submission channel
  937. SeeAlso: AX=E10Ah,AX=E106h,AX=E108h
  938.  
  939. Format of Da Vinci eMail "NetOpen" parameter block:
  940. Offset    Size    Description    (Table 3108)
  941.  00h    WORD    operation (1 = read, 2 = write)
  942.  02h    WORD    segment of uppercase To: username
  943.  04h    WORD    offset of uppercase To: username
  944.  06h    WORD    segment of "DVSEMAIL"
  945.  08h    WORD    offset of "DVSEMAIL"
  946.  0Ah    WORD    segment of node address
  947.  0Ch    WORD    offset of node address
  948. --------e-92E106BX0004-----------------------
  949. INT 92 - Da Vinci eMail Dispatcher - "NetRead"
  950.     AX = E106h
  951.     BX = 0004h
  952.     CX:DX -> parameter block
  953. Return: AX = 0001h
  954. SeeAlso: AX=E108h
  955. --------e-92E107BX0002-----------------------
  956. INT 92 - Da Vinci eMail Dispatcher - "NetGetError"
  957.     AX = E107h
  958.     BX = 0002h
  959.     CX:DX -> parameter block
  960. Return: AX = 0001h
  961. SeeAlso: AX=E109h,AX=E180h
  962. --------e-92E108-----------------------------
  963. INT 92 - Da Vinci eMail Dispatcher - "NetWrite"
  964.     AX = E108h
  965.     BX = size of parameter block in words (0004h)
  966.     CX:DX -> parameter block (see #3109)
  967. Return: AX = amount written
  968. Desc:    This function is used to write transactions to the dispatcher.
  969.       The command block is written first and then another call is used
  970.       to write the associated data.
  971. SeeAlso: AX=E106h
  972.  
  973. Format of Da Vinci eMail "NetWrite" parameter block:
  974. Offset    Size    Description    (Table 3109)
  975.  00h    WORD    buffer count (see #3111)
  976.  02h    WORD    segment of command buffer (see #3110)
  977.  04h    WORD    offset of command buffer
  978.  06h    WORD    handle from NetOpen
  979.  
  980. Format of Da Vinci eMail command buffer:
  981. Offset    Size    Description    (Table 3110)
  982.  00h    BYTE    command
  983.         21h '!' Protocol commands for remote control
  984.         41h 'A' Authorization protocol element
  985.         42h 'B' Return(back) routing information
  986.             Associated data is the From: username
  987.         43h 'C' Carbon Copy list
  988.             Associated data is a comma delimitted list of usernames
  989.         44h 'D' Distribution list
  990.             Associated data is a comma delimitted list of usernames
  991.         45h 'E' Mail end marker
  992.             No associated data
  993.         48h 'H' Mail message header
  994.             Associated data is a message header buffer
  995.         4Dh 'M' Mail message
  996.             Associated data is the body of the message
  997.         4Fh 'O' Object
  998.         50h 'P' Paperclip attachment
  999.         52h 'R' Routing information
  1000.             Associated data is the To: username
  1001.         53h 'S' Subject
  1002.             Associated data is the subject of the message
  1003.         54h 'T' Trail of Reply/Forwards
  1004.  01h    BYTE    subcommand
  1005.  02h    DWORD    length of associated data
  1006.  
  1007. Format of Da Vinci eMail message header buffer:
  1008. Offset    Size    Description    (Table 3111)
  1009.  00h 30 BYTEs    subject line
  1010.  1Eh 24 BYTEs    To
  1011.  36h 24 BYTEs    From
  1012.  4Eh    DWORD    Time
  1013.         BYTE    00h
  1014.         BYTE    hour
  1015.         BYTE    minute
  1016.         BYTE    second
  1017.  52h    DWORD    Date
  1018.         BYTE    00h
  1019.         BYTE    year
  1020.         BYTE    month
  1021.         BYTE    day
  1022.  56h    DWORD    serial number (00000000h)
  1023.  5Ah    WORD    mail types (see #3112)
  1024.  5Ch    WORD    special types (0)
  1025.  
  1026. Bitfields for Da Vinci eMail mail types:
  1027. Bit(s)    Description    (Table 3112)
  1028.  7    blind carbon copy
  1029.  6    carbon copy
  1030.  5    priority
  1031.  4    confidential
  1032.  3    certified
  1033.  2    bulk
  1034.  1-0    class (first, second, third, bulk)
  1035. --------e-92E109-----------------------------
  1036. INT 92 - Da Vinci eMail Dispatcher - "NetErrorFix" (UNUSED)
  1037.     AX = E109h
  1038.     BX = size of parameter block in words (0001h)
  1039.     CX:DX -> parameter block (see #3113)
  1040. Return: AX = FF97h (ERS_NOT_AVAILABLE)
  1041. SeeAlso: AX=E107h,AX=E180h
  1042.  
  1043. Format of Da Vinci eMail "NetErrorFix" parameter block:
  1044. Offset    Size    Description    (Table 3113)
  1045.  00h    WORD    ???
  1046. --------e-92E10A-----------------------------
  1047. INT 92 - Da Vinci eMail Dispatcher - "NetClose"
  1048.     AX = E10Ah
  1049.     BX = size of parameter block in words (0001h)
  1050.     CX:DX -> parameter block (see #3114)
  1051. Return: AX = 0001h
  1052. Desc:    this function is used to close a dispatcher handle
  1053. SeeAlso: AX=E105h
  1054.  
  1055. Format of Da Vinci eMail "NetClose" parameter block:
  1056. Offset    Size    Description    (Table 3114)
  1057.  00h    WORD    handle from NetOpen
  1058. --------e-92E10B-----------------------------
  1059. INT 92 - Da Vinci eMail Dispatcher - "NetCheckQueue"
  1060.     AX = E10Bh
  1061.     BX = size of parameter block in words (0004h)
  1062.     CX:DX -> parameter block (see #3115)
  1063. Return: AX = 0001h
  1064. SeeAlso: AX=E102h,AX=E10Ch
  1065.  
  1066. Format of Da Vinci eMail "NetCheckQueue" parameter block:
  1067. Offset    Size    Description    (Table 3115)
  1068.  00h    WORD    segment of 24-byte username buffer
  1069.  02h    WORD    offset of 24-byte username buffer
  1070.  04h    WORD    segment of 24-byte protocol buffer
  1071.  06h    WORD    offset of 24-byte protocol buffer
  1072. --------e-92E10C-----------------------------
  1073. INT 92 - Da Vinci eMail Dispatcher - "NetReadQueue"
  1074.     AX = E10Ch
  1075.     BX = size of parameter block in words (0002h)
  1076.     CX:DX -> parameter block (see #3116)
  1077. Return: AX = 0001h
  1078. SeeAlso: AX=E10Bh
  1079.  
  1080. Format of Da Vinci eMail "NetReadQueue" parameter block:
  1081. Offset    Size    Description    (Table 3116)
  1082.  00h    WORD    Segment of 128 byte node address buffer
  1083.  02h    WORD    Offset of 128 byte node address buffer
  1084. --------e-92E10D-----------------------------
  1085. INT 92 - Da Vinci eMail Dispatcher - "NetSubmitName"
  1086.     AX = E10Dh
  1087.     BX = size of parameter block in words (0006h)
  1088.     CX:DX -> parameter block (see #3117)
  1089. Return: AX = status (see #3105)
  1090. Desc:    this function is used to verify username/password
  1091. SeeAlso: AX=E10Eh
  1092.  
  1093. Format of Da Vinci eMail "NetSubmitName" parameter block:
  1094. Offset    Size    Description    (Table 3117)
  1095.  00h    WORD    segment of uppercase password string
  1096.  02h    WORD    offset of uppercase password string
  1097.  04h    WORD    segment of uppercase username string
  1098.  06h    WORD    offset of uppercase username string
  1099.  08h    WORD    segment of "DVSEMAIL"
  1100.  0Ah    WORD    offset of "DVSEMAIL"
  1101. --------e-92E10E-----------------------------
  1102. INT 92 - Da Vinci eMail Dispatcher - "NetRemoveName"
  1103.     AX = E10Eh
  1104.     BX = size of parameter block in words (0004h)
  1105.     CX:DX -> parameter block (see #3118)
  1106. Return: AX = 0001h
  1107. Desc:    this function is used to remove a username
  1108. SeeAlso: AX=E10Dh
  1109.  
  1110. Format of Da Vinci eMail "NetRemoveName" parameter block:
  1111. Offset    Type    Description    (Table 3118)
  1112.  00h    WORD    segment of uppercase username
  1113.  02h    WORD    offset of uppercase username
  1114.  04h    WORD    segment of "DVSEMAIL"
  1115.  06h    WORD    offset of "DVSEMAIL"
  1116. --------e-92E10FBX0000-----------------------
  1117. INT 92 - Da Vinci eMail Dispatcher - IS ANYONE THERE? QUERY
  1118.     AX = E10Fh
  1119.     BX = 0000h
  1120.     CX:DX ignored
  1121. Return: AX = 0001h
  1122. SeeAlso: AX=E180h
  1123. --------e-92E110-----------------------------
  1124. INT 92 - Da Vinci eMail Dispatcher - "NetGetAltRoute"
  1125.     AX = E110h
  1126.     BX = size of parameter block in words (0006h)
  1127.     CX:DX -> parameter block (see #3119)
  1128. Return: AX = 0001h
  1129. SeeAlso: AX=E111h,AX=E113h
  1130.  
  1131. Format of Da Vinci eMail "NetGetAltRoute" parameter block:
  1132. Offset    Size    Description    (Table 3119)
  1133.  00h  6 WORDs    ???
  1134. --------e-92E111-----------------------------
  1135. INT 92 - Da Vinci eMail Dispatcher - "NetDeleteAltRoutes"
  1136.     AX = E111h
  1137.     BX = size of parameter block in words (0004h)
  1138.     CX:DX -> parameter block (see #3120)
  1139. Return: AX = 0001h
  1140. SeeAlso: AX=E110h,AX=E113h
  1141.  
  1142. Format of Da Vinci eMail "NetDeleteAltRoutes" parameter block:
  1143. Offset    Size    Description    (Table 3120)
  1144.  00h  4 WORDs    ???
  1145. --------e-92E112-----------------------------
  1146. INT 92 - Da Vinci eMail Dispatcher - "NetChangePassword"
  1147.     AX = E112h
  1148.     BX = size of parameter block in words (0008h)
  1149.     CX:DX -> parameter block (see #3121)
  1150. Return: AX = 0001h
  1151. SeeAlso: AX=E180h
  1152.  
  1153. Format of Da Vinci eMail "NetChangePassword" parameter block:
  1154. Offset    Size    Description    (Table 3121)
  1155.  00h  8 WORDs    ???
  1156. --------e-92E113-----------------------------
  1157. INT 92 - Da Vinci eMail Dispatcher - "NetSetAltRoute"
  1158.     AX = E113h
  1159.     BX = size of parameter block in words (0008h)
  1160.     CX:DX -> parameter block (see #3122)
  1161. Return: AX = 0001h
  1162. SeeAlso: AX=E110h,AX=E111h
  1163.  
  1164. Format of Da Vinci eMail "NetSetAltRoute" parameter block:
  1165. Offset    Size    Description    (Table 3122)
  1166.  00h  8 WORDs    ???
  1167. --------e-92E175-----------------------------
  1168. INT 92 - Da Vinci eMail Dispatcher - BECOME MICRO TSR
  1169.     AX = E175h
  1170. Return: AX = 0012h
  1171.     BX = PSP
  1172. SeeAlso: AX=E180h
  1173. --------e-92E180-----------------------------
  1174. INT 92 - Da Vinci eMail Dispatcher - INSTALLATION CHECK
  1175.     AX = E180h
  1176. Return: AX = 0012h if installed
  1177.     ES:DX -> '$'-terminated driver information string
  1178. SeeAlso: AX=E102h,AX=E105h,AX=E10Fh,AX=E175h
  1179. --------r-93---------------------------------
  1180. INT 93 - IBM ROM BASIC - used while in interpreter
  1181. Notes:    called by ROM BASIC
  1182.     BASIC.COM/BASICA.COM do not restore vector on termination
  1183. --------N-93---------------------------------
  1184. INT 93 - IBM TOKEN RING ADAPTER - ???
  1185. SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
  1186. --------r-94---------------------------------
  1187. INT 94 - IBM ROM BASIC - used while in interpreter
  1188. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1189.     BASIC.COM/BASICA.COM do not restore vector on termination
  1190. --------s-94----SI0000-----------------------
  1191. INT 94 u - PCM driver - INITIALIZE SOUND
  1192.     SI = 0000h
  1193.     ES:BX -> parameters
  1194. Return: ???
  1195. Program: PCM.COM is a sound driver for Media Vision's Pro Audio Spectrum
  1196.       sound boards
  1197. Note:    the installation check consists of testing for the signature string
  1198.       "PCMDRIVER" immediately preceding the interrupt handler; the word
  1199.       preceding the signature gives the PCM driver's version
  1200. SeeAlso: SI=0001h,SI=0002h,SI=0003h,SI=0004h,SI=0005h,SI=000Ah
  1201. Index:    installation check;PCM driver|PCM.COM;installation check
  1202. Index:    PCM driver;installation check
  1203. --------s-94----SI0001-----------------------
  1204. INT 94 u - PCM driver - INITIALIZE PCM
  1205.     SI = 0001h
  1206.     ES:BX -> parameters
  1207. Return: ???
  1208. SeeAlso: SI=0000h,SI=0002h,SI=0003h,SI=000Ah
  1209. --------s-94----SI0002-----------------------
  1210. INT 94 u - PCM driver - INITIALIZE PCM INFO
  1211.     SI = 0002h
  1212.     ES:BX -> parameters (see #3123)
  1213. Return: ???
  1214. SeeAlso: SI=0000h,SI=0001h,SI=0003h,SI=000Ah
  1215.  
  1216. Format of PCM driver function 0002h parameters:
  1217. Offset    Size    Description    (Table 3123)
  1218.  00h    DWORD    rate
  1219.  04h    WORD    channel number
  1220.  06h    WORD    "comp"
  1221.  08h    WORD    "dsize"
  1222. --------s-94----SI0003-----------------------
  1223. INT 94 u - PCM driver - INITIALIZE DMA BUFFER
  1224.     SI = 0003h
  1225.     ES:BX -> parameters (see #3124)
  1226. Return: ???
  1227. SeeAlso: SI=0000h,SI=000Ah,SI=000Bh
  1228.  
  1229. Format of PCM driver function 0003h parameters:
  1230. Offset    Size    Description    (Table 3124)
  1231.  00h    DWORD    -> DMA buffer
  1232.  04h    WORD    size of DMA buffer
  1233.  06h    WORD    number of divisions
  1234. --------s-94----SI0004-----------------------
  1235. INT 94 u - PCM driver - INITIALIZE USER FUNCTION
  1236.     SI = 0004h
  1237.     ES:BX -> parameters (see #3125)
  1238. Return: ???
  1239. SeeAlso: SI=0000h,SI=0001h
  1240.  
  1241. Format of PCM driver function 0004h parameters:
  1242. Offset    Size    Description    (Table 3125)
  1243.  00h    DWORD    -> user function
  1244. --------s-94----SI0005-----------------------
  1245. INT 94 u - PCM driver - BEGIN AUDIO PLAY
  1246.     SI = 0005h
  1247. Return: ???
  1248. SeeAlso: SI=0000h,SI=0006h,SI=0007h,SI=0009h
  1249. --------s-94----SI0006-----------------------
  1250. INT 94 u - PCM driver - BEGIN AUDIO RECORD
  1251.     SI = 0006h
  1252. Return: ???
  1253. SeeAlso: SI=0005h,SI=0007h,SI=0009h
  1254. --------s-94----SI0007-----------------------
  1255. INT 94 u - PCM driver - PAUSE AUDIO PLAY/RECORD
  1256.     SI = 0007h
  1257. Return: ???
  1258. SeeAlso: SI=0005h,SI=0006h,SI=0008h
  1259. --------s-94----SI0008-----------------------
  1260. INT 94 u - PCM driver - RESUME AUDIO PLAY/RECORD
  1261.     SI = 0008h
  1262. Return: ???
  1263. SeeAlso: SI=0007h
  1264. --------s-94----SI0009-----------------------
  1265. INT 94 u - PCM driver - STOP AUDIO PLAY/RECORD
  1266.     SI = 0009h
  1267. Return: ???
  1268. SeeAlso: SI=0005h,SI=0006h,SI=0007h
  1269. --------s-94----SI000A-----------------------
  1270. INT 94 u - PCM driver - UNHOOK INTERRUPTS AND TURN OFF DMA
  1271.     SI = 000Ah
  1272. Return: ???
  1273. SeeAlso: SI=0000h,SI=0001h,SI=0003h
  1274. Index:    uninstall;PCM driver
  1275. --------s-94----SI000B-----------------------
  1276. INT 94 u - PCM driver - FIND VALID DMA BUFFER IN HUGE MEMORY BLOCK
  1277.     SI = 000Bh
  1278.     ES:BX -> parameters (see #3126)
  1279. Return: ???
  1280. SeeAlso: SI=0003h
  1281.  
  1282. Format of PCM driver functio 000Bh parameters:
  1283. Offset    Size    Description    (Table 3126)
  1284.  00h    DWORD    -> memory block to contain DMA buffer
  1285.  04h    WORD    desired size of DMA buffer
  1286. --------s-94----SI000D-----------------------
  1287. INT 94 u - Media Vision PCM.COM - GET STATUS
  1288.     SI = 000Dh
  1289. Return: AX = status (0000h = waiting) (see #3127)
  1290.  
  1291. Bitfields for PCM.COM status:
  1292. Bit(s)    Description    (Table 3127)
  1293.  0    playing
  1294.  1    recording
  1295.  2    SBplaying
  1296.  3    SBrecording
  1297.  14    SBpaused
  1298.  15    paused
  1299. --------s-94----SI8000-----------------------
  1300. INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER ADDRESS
  1301.     SI = 8000h
  1302. Return: DX:AX -> DMA buffer
  1303. Program: PCM.COM is a superset of the standard PCM driver which provides
  1304.       additional functions for fine control of the driver
  1305. Note:    the installation check for the Media Vision PCM.COM "shark" functions
  1306.       consists of testing for the signature "PCM-SHARK" at offset 107h in
  1307.       the INT 94 handler's segment
  1308. SeeAlso: SI=8001h,SI=8004h
  1309. Index:    installation check;Media Vision PCM.COM|PCM.COM;installation check
  1310. Index:    Media Vision PCM.COM;"shark" functions
  1311. --------s-94----SI8001-----------------------
  1312. INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER SIZE AND DIVISIONS
  1313.     SI = 8001h
  1314. Return: AX = DMA buffer size
  1315.     DX = divisions
  1316. SeeAlso: SI=8000h
  1317. --------s-94----SI8002-----------------------
  1318. INT 94 u - Media Vision PCM.COM - CHECK BOARD ADDRESS
  1319.     SI = 8002h
  1320. Return: AX = status
  1321.         0000h if board not at specified I/O address
  1322.         other if board found
  1323. Note:    the I/O address is specified by ORing the base I/O port shifted left
  1324.       four bits into SI before calling INT 94
  1325. SeeAlso: SI=8000h
  1326. --------s-94----SI8004-----------------------
  1327. INT 94 u - Media Vision PCM.COM - GET INTERNAL NOTE BUFFER
  1328.     SI = 8004h
  1329. Return: AX = offset of note buffer (segment = segment of internal DMA buffer)
  1330.     DX = size of buffer in note structures
  1331. SeeAlso: SI=8000h
  1332. --------s-94----SI8005-----------------------
  1333. INT 94 u - Media Vision PCM.COM - SINGLE-STEP QUEUE
  1334.     SI = 8005h
  1335. Return: ???
  1336. --------s-94----SI8011-----------------------
  1337. INT 94 u - Media Vision PCM.COM - INITIALIZE
  1338.     SI = 8011h
  1339.     ES:BX -> "iobf91" structure
  1340. Return: ???
  1341. --------s-94----SI8012-----------------------
  1342. INT 94 u - Media Vision PCM.COM - LOAD SOUND FOR LATER PLAY THROUGH KEYBOARD
  1343.     SI = 8012h
  1344.     ES:BX -> "i94f92buf" structure
  1345. Return: ???
  1346. SeeAlso: SI=8013h,SI=8014h
  1347. --------s-94----SI8013-----------------------
  1348. INT 94 u - Media Vision PCM.COM - GET INTERNAL SOUND USAGE
  1349.     SI = 8013h
  1350. Return: AX = number of sounds used
  1351.     DX = maximum handles
  1352. --------s-94----SI8014-----------------------
  1353. INT 94 u - Media Vision PCM.COM - GET DATA FOR SPECIFIED SOUND
  1354.     SI = 8014h
  1355.     ES:BX -> "i94f92buf" structure to be filled in
  1356.         sound number field set to desired sound
  1357. Return: AX = status
  1358.         0000h successful
  1359.         FFFFh sound number out of range
  1360. SeeAlso: SI=8012h,SI=8013h
  1361. --------s-94----SI8015-----------------------
  1362. INT 94 u - Media Vision PCM.COM - GET/SET INTERNAL DMA BUFFER
  1363.     SI = 8015h
  1364.     ES:BX -> DMA info structure (see #3128)
  1365. Return: ???
  1366.  
  1367. Format of PCM.COM DMA info structure:
  1368. Offset    Size    Description    (Table 3128)
  1369.  00h    DWORD    -> DMA buffer (offset FFFFh = return current buffer info)
  1370.  04h    WORD    DMA buffer size
  1371.  06h    WORD    divisions
  1372. --------s-94----SI8016-----------------------
  1373. INT 94 u - Media Vision PCM.COM - SIMULATE DOUBLE-SHIFT HOTKEY
  1374.     SI = 8016h
  1375.     AX = hotkey number (01h-08h)
  1376. Return: ???
  1377. SeeAlso: AL=02h/SI=8017h
  1378. --------s-94--01SI8017-----------------------
  1379. INT 94 u - Media Vision PCM.COM - CTRL-G INTERCEPT
  1380.     AL = 01h
  1381.     SI = 8017h
  1382.     AH = new state (00h off, 01h on)
  1383. Return: ???
  1384. SeeAlso: AL=02h/SI=8017h
  1385. --------s-94--02SI8017-----------------------
  1386. INT 94 u - Media Vision PCM.COM - DOUBLE-SHIFT-HOTKEY SOUND FEATURE
  1387.     AL = 02h
  1388.     SI = 8017h
  1389.     AH = new state (00h off, 01h on)
  1390. Return: ???
  1391. --------s-94--04SI8017-----------------------
  1392. INT 94 u - Media Vision PCM.COM - RANDOM SOUND FEATURE
  1393.     AL = 04h
  1394.     SI = 8017h
  1395.     AH = new state
  1396.         00h off
  1397.         01h on
  1398.         CX = minimum delay
  1399.         DX = maximum delay
  1400. Return: ???
  1401. --------s-94--08SI8017-----------------------
  1402. INT 94 u - Media Vision PCM.COM - NO ACTIVITY FEATURE
  1403.     AL = 08h
  1404.     SI = 8017h
  1405.     AH = new state
  1406.         00h off
  1407.         01h on
  1408.         DX:CX = delay
  1409. Return: ???
  1410. SeeAlso: AL=10h/SI=8017h
  1411. --------s-94--10SI8017-----------------------
  1412. INT 94 u - Media Vision PCM.COM - TIMER CONTROL
  1413.     AL = 10h
  1414.     SI = 8017h
  1415.     AH = timer options (see #3129)
  1416.     DX:CX = delay if AH bit 7 set (one-shot if DX bit 15 set)
  1417. Return: ???
  1418. SeeAlso: AL=08h/SI=8017h
  1419.  
  1420. Bitfields for PCM.COM timer options:
  1421. Bit(s)    Description    (Table 3129)
  1422.  7    set timer
  1423.  6    timer active (timer turned off if clear)
  1424.  5-0    timer number
  1425. --------s-94----SI8018-----------------------
  1426. INT 94 u - Media Vision PCM.COM - GET INFO
  1427.     SI = 8018h
  1428.     AL = what to get
  1429.         00h "F92state"
  1430.         01h "F92bkgd"
  1431.         02h "I10timer"
  1432.         03h "I08state"
  1433. Return: DX:AX -> desired information
  1434. --------r-95---------------------------------
  1435. INT 95 - IBM ROM BASIC - used while in interpreter
  1436. Notes:    called by ROM BASIC
  1437.     BASIC.COM/BASICA.COM do not restore vector on termination
  1438. --------r-95---------------------------------
  1439. INT 95 - APL*PLUS/PC - DETERMINE R= SPACE
  1440. Note:    use only when the R= option is invoked on entering APL
  1441. --------r-96---------------------------------
  1442. INT 96 - IBM ROM BASIC - used while in interpreter
  1443. Notes:    called by ROM BASIC
  1444.     BASIC.COM/BASICA.COM do not restore vector on termination
  1445. --------r-97---------------------------------
  1446. INT 97 - IBM ROM BASIC - used while in interpreter
  1447. Notes:    called by ROM BASIC
  1448.     BASIC.COM/BASICA.COM do not restore vector on termination
  1449. --------r-98---------------------------------
  1450. INT 98 - IBM ROM BASIC - used while in interpreter
  1451. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1452.     BASIC.COM/BASICA.COM do not restore vector on termination
  1453. --------r-99---------------------------------
  1454. INT 99 - IBM ROM BASIC - used while in interpreter
  1455. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1456.     BASIC.COM/BASICA.COM do not restore vector on termination
  1457. --------r-9A---------------------------------
  1458. INT 9A - IBM ROM BASIC - used while in interpreter
  1459. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1460.     BASIC.COM/BASICA.COM do not restore vector on termination
  1461. SeeAlso: INT 80"BASIC",INT 99,INT 9B
  1462. --------r-9B---------------------------------
  1463. INT 9B - IBM ROM BASIC - used while in interpreter
  1464. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1465.     BASIC.COM/BASICA.COM do not restore vector on termination
  1466. SeeAlso: INT 80"BASIC",INT 9A,INT 9C"BASIC"
  1467. --------r-9C---------------------------------
  1468. INT 9C - IBM ROM BASIC - used while in interpreter
  1469. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1470.     BASIC.COM/BASICA.COM do not restore vector on termination
  1471. SeeAlso: INT 80"BASIC",INT 9B,INT 9D"BASIC"
  1472. --------v-9C---------------------------------
  1473. INT 9C - VIRUS - "INT13" - ORIGINAL INT 13h VECTOR
  1474. SeeAlso: INT 8B"VIRUS",INT 9D"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
  1475. --------r-9D---------------------------------
  1476. INT 9D - IBM ROM BASIC - used while in interpreter
  1477. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1478.     BASIC.COM/BASICA.COM do not restore vector on termination
  1479. SeeAlso: INT 80"BASIC",INT 9C"BASIC",INT 9E"BASIC"
  1480. --------v-9D---------------------------------
  1481. INT 9D - VIRUS - "INT13" - ROM INT 13h ENTRY POINT
  1482. Note:    this vector is used by the virus to store the result of a call to
  1483.       INT 2F/AH=13h
  1484. SeeAlso: INT 2F/AH=13h,INT 9C"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
  1485. --------r-9E---------------------------------
  1486. INT 9E - IBM ROM BASIC - used while in interpreter
  1487. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1488.     BASIC.COM/BASICA.COM do not restore vector on termination
  1489. SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT 9F"BASIC"
  1490. --------v-9E---------------------------------
  1491. INT 9E - VIRUS - "INT13" - ORIGINAL INT 21h VECTOR
  1492. SeeAlso: INT 70"VIRUS",INT 9C"VIRUS",INT 9D"VIRUS",INT E0"VIRUS"
  1493. --------r-9F---------------------------------
  1494. INT 9F - IBM ROM BASIC - used while in interpreter
  1495. Notes:    called by ROM BASIC
  1496.     BASIC.COM/BASICA.COM do not restore vector on termination
  1497. SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT A0"BASIC"
  1498. --------v-9F---------------------------------
  1499. INT 9F - VIRUS - "INT13" - STORAGE FOR USER INT 13h VECTOR
  1500. Note:    while it is infecting a file, the INT13 virus grabs INT 13 and uses
  1501.       this interrupt to store the existing INT 13 vector for later
  1502.       restoration
  1503. SeeAlso: INT 9C"VIRUS",INT 9D"VIRUS",INT D3"VIRUS"
  1504. --------r-A0---------------------------------
  1505. INT A0 - IBM ROM BASIC - used while in interpreter
  1506. Notes:    called by ROM BASIC
  1507.     BASIC.COM/BASICA.COM do not restore vector on termination
  1508. SeeAlso: INT 80"BASIC",INT 9F"BASIC",INT A1"BASIC"
  1509. --------r-A0---------------------------------
  1510. INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE
  1511. SeeAlso: INT 59
  1512. --------r-A1---------------------------------
  1513. INT A1 - IBM ROM BASIC - used while in interpreter
  1514. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1515.     BASIC.COM/BASICA.COM do not restore vector on termination
  1516. SeeAlso: INT 80"BASIC",INT A0"BASIC",INT A2"BASIC"
  1517. --------r-A2---------------------------------
  1518. INT A2 - IBM ROM BASIC - used while in interpreter
  1519. Notes:    called by ROM BASIC
  1520.     BASIC.COM/BASICA.COM do not restore vector on termination
  1521. SeeAlso: INT 80"BASIC",INT A1"BASIC",INT A3"BASIC"
  1522. --------r-A3---------------------------------
  1523. INT A3 - IBM ROM BASIC - used while in interpreter
  1524. Notes:    called by ROM BASIC
  1525.     BASIC.COM/BASICA.COM do not restore vector on termination
  1526. SeeAlso: INT 80"BASIC",INT A2"BASIC",INT A4"BASIC"
  1527. --------r-A4---------------------------------
  1528. INT A4 - IBM ROM BASIC - used while in interpreter
  1529. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1530.     BASIC.COM/BASICA.COM do not restore vector on termination
  1531. SeeAlso: INT 80"BASIC",INT A3"BASIC",INT A5"BASIC"
  1532. --------U-A4---------------------------------
  1533. INT A4 U - Right Hand Man - API
  1534.     AH = function number (v3.3 supports functions 00h-52h)
  1535. Return: CF set on error
  1536.     CF clear if successful
  1537. Program: Right Hand Man is a TSR desk-top utility originally by Red E Products
  1538.       which has evolved into Futurus Team
  1539. Note:    this interrupt is only hooked while popped up
  1540. SeeAlso: INT 2F/AX=A4E0h
  1541. --------r-A5---------------------------------
  1542. INT A5 - IBM ROM BASIC - used while in interpreter
  1543. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1544.     BASIC.COM/BASICA.COM do not restore vector on termination
  1545. SeeAlso: INT 80"BASIC",INT A4"BASIC",INT A6"BASIC"
  1546. --------r-A6---------------------------------
  1547. INT A6 - IBM ROM BASIC - used while in interpreter
  1548. Notes:    called by ROM BASIC
  1549.     BASIC.COM/BASICA.COM do not restore vector on termination
  1550. SeeAlso: INT 80"BASIC",INT A5"BASIC",INT A7"BASIC"
  1551. --------r-A7---------------------------------
  1552. INT A7 - IBM ROM BASIC - used while in interpreter
  1553. Notes:    called by ROM BASIC
  1554.     BASIC.COM/BASICA.COM do not restore vector on termination
  1555. --------r-A8---------------------------------
  1556. INT A8 - IBM ROM BASIC - used while in interpreter
  1557. Notes:    called by ROM BASIC
  1558.     BASIC.COM/BASICA.COM do not restore vector on termination
  1559. --------r-A9---------------------------------
  1560. INT A9 - IBM ROM BASIC - used while in interpreter
  1561. Notes:    called by ROM BASIC
  1562.     BASIC.COM/BASICA.COM do not restore vector on termination
  1563. --------r-AA---------------------------------
  1564. INT AA - IBM ROM BASIC - used while in interpreter
  1565. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1566.     BASIC.COM/BASICA.COM do not restore vector on termination
  1567. --------r-AB---------------------------------
  1568. INT AB - IBM ROM BASIC - used while in interpreter
  1569. Notes:    called by ROM BASIC
  1570.     BASIC.COM/BASICA.COM do not restore vector on termination
  1571. --------r-AC---------------------------------
  1572. INT AC - IBM ROM BASIC - used while in interpreter
  1573. Notes:    called by ROM BASIC
  1574.     BASIC.COM/BASICA.COM do not restore vector on termination
  1575. --------r-AD---------------------------------
  1576. INT AD - IBM ROM BASIC - used while in interpreter
  1577. Notes:    called by ROM BASIC
  1578.     BASIC.COM/BASICA.COM do not restore vector on termination
  1579. --------r-AE---------------------------------
  1580. INT AE - IBM ROM BASIC - used while in interpreter
  1581. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1582.     BASIC.COM/BASICA.COM do not restore vector on termination
  1583. --------r-AF---------------------------------
  1584. INT AF - IBM ROM BASIC - used while in interpreter
  1585. Notes:    called by ROM BASIC
  1586.     BASIC.COM/BASICA.COM do not restore vector on termination
  1587. --------r-B0---------------------------------
  1588. INT B0 - IBM ROM BASIC - used while in interpreter
  1589. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1590.     BASIC.COM/BASICA.COM do not restore vector on termination
  1591. --------r-B1---------------------------------
  1592. INT B1 - IBM ROM BASIC - used while in interpreter
  1593. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1594.     BASIC.COM/BASICA.COM do not restore vector on termination
  1595. --------r-B2---------------------------------
  1596. INT B2 - IBM ROM BASIC - used while in interpreter
  1597. Notes:    called by ROM BASIC
  1598.     BASIC.COM/BASICA.COM do not restore vector on termination
  1599. --------r-B3---------------------------------
  1600. INT B3 - IBM ROM BASIC - used while in interpreter
  1601. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1602.     BASIC.COM/BASICA.COM do not restore vector on termination
  1603. --------U-B370-------------------------------
  1604. INT B3 - ZIPKEY - GET VERSION
  1605.     AH = 70h
  1606. Return: AH = major version
  1607.     AL = minor version
  1608.     CL = number of states and territories in current database
  1609.     DH = year of current database - 1900
  1610.     DL = month of current database's file date
  1611. Program: ZIPKEY is a resident ZIPCODE database by Eric Isaacson
  1612. Note:    if installed, the string "ZIPKEY" is present at offset 75h in the
  1613.       interrupt handler's segment, and the byte at 7Bh contains the API
  1614.       version number (00h for v1.x, 01h for v2.0)
  1615. --------U-B371-------------------------------
  1616. INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE
  1617.     AH = 71h
  1618.     BX = abbreviation, in either case (first letter in BL)
  1619. Return: CF set on error
  1620.         AL = FFh
  1621.     CF clear if successful
  1622.         AL = ZIPKEY state code
  1623. SeeAlso: AH=72h
  1624. --------U-B372-------------------------------
  1625. INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION
  1626.     AH = 72h
  1627.     BL = ZIPKEY state code
  1628. Return: CF set on error
  1629.         AX destroyed
  1630.     CF clear if successful
  1631.         AX = abbreviation, in upper case
  1632. SeeAlso: AH=71h,AH=73h
  1633. --------U-B373-------------------------------
  1634. INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME
  1635.     AH = 73h
  1636.     BL = ZIPKEY state code
  1637.     ES:DI -> buffer for name
  1638. Return: CF set on error
  1639.         AX destroyed
  1640.     CF clear if successful
  1641.         ES:DI points one byte beyond end of name
  1642. SeeAlso: AH=72h
  1643. --------U-B374-------------------------------
  1644. INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS
  1645.     AH = 74h
  1646.     DX = zipcode region (0-999)
  1647.     CH = last two digits of zipcode (0-99)
  1648.     ES:DI -> buffer
  1649. Return: CF set on error
  1650.         AX destroyed
  1651.     CF clear if successful
  1652.         ES:DI points one byte beyond end of digit string
  1653. --------U-B375-------------------------------
  1654. INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE
  1655.     AH = 75h
  1656.     DX = zipcode region (0-999)
  1657.     CH = last two digits of zipcode (0-99)
  1658. Return: CF set on error (zipcode not found)
  1659.         AL = suggested state code, FFh if none
  1660.     CF clear if successful
  1661.         AL = ZIPKEY state code
  1662.         BX = area code (v2.0+)
  1663. SeeAlso: AH=76h,AH=79h
  1664. --------U-B376-------------------------------
  1665. INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE
  1666.     AH = 76h
  1667.     DX = zipcode region (0-999)
  1668.     CH = last two digits of zipcode (0-99)
  1669.     ES:DI -> buffer for name
  1670. Return: CF set on error
  1671.         AL = suggested state code, FFh if none
  1672.         ES:DI buffer filled with suggested city name
  1673.     CF clear if successful
  1674.         AL = ZIPKEY state code
  1675.         BX = area code (v2.0+)
  1676.         ES:DI points one byte beyond end of name
  1677. SeeAlso: AH=75h,AH=78h,AH=7Eh
  1678. --------U-B377-------------------------------
  1679. INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE
  1680.     AH = 77h
  1681.     DX = zipcode region (0-999)
  1682.     CH = last two digits of zipcode (0-99)
  1683.     BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key
  1684. Return: CF set on error
  1685.         AX destroyed
  1686.     CF clear if successful
  1687.         zipcode specification as defined by the BX keystroke is placed in
  1688.           keyboard buffer, as if the user had popped up ZIPKEY and exited
  1689.           by pressing the key specified by BX
  1690. --------U-B378-------------------------------
  1691. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY
  1692.     AH = 78h
  1693.     BL = ZIPKEY state code
  1694.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  1695. Return: BH = number of matching entries (set to 51 if more than 50)
  1696.     DX = zipcode region of first match (0-999)
  1697.     CL = last two digits of first zipcode in the range (0-99)
  1698.     CH = last two digits of last zipcode in the range (0-99)
  1699.     AX destroyed
  1700. SeeAlso: AH=79h,AH=7Ah
  1701. --------U-B379-------------------------------
  1702. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY
  1703.     AH = 79h
  1704.     BL = ZIPKEY state code of first state to search
  1705.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  1706. Return: AL = ZIPKEY state code of first matching state
  1707.     BH = number of matching entries (set to 51 if more than 50)
  1708.     DX = zipcode region of first match (0-999)
  1709.     CL = last two digits of first zipcode in first range (0-99)
  1710.     CH = last two digits of last zipcode in first range (0-99)
  1711. Note:    to find all matching cities, repeat search with BL set to one more than
  1712.       the returned AL
  1713. SeeAlso: AH=78h,AH=7Ah
  1714. --------U-B37A-------------------------------
  1715. INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP
  1716.     AH = 7Ah
  1717.     BL = case number (0 to one less than value returned in BH by lookup)
  1718. Return: AL = ZIPKEY state code
  1719.     DX = zipcode region (0-999)
  1720.     CL = last two digits of first zipcode in the range (0-99)
  1721.     CH = last two digits of last zipcode in the range (0-99)
  1722. SeeAlso: AH=78h,AH=79h
  1723. --------U-B37B-------------------------------
  1724. INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT
  1725.     AH = 7Bh
  1726. Return: BL = maximum number of characters for a city name
  1727.     BH = ZIPKEY state code for last city-name search, or FFh if none
  1728.     CX:DX = internal code identifying last city search
  1729.     AX destroyed
  1730. SeeAlso: AH=7Ch
  1731. --------U-B37C-------------------------------
  1732. INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT
  1733.     AH = 7Ch
  1734.     BL = maximum number of characters for a city name
  1735.     BH = ZIPKEY state code for last city-name search, or FFh if none
  1736.     CX:DX = internal code returned by AH=7Bh
  1737. Return: CF set on error
  1738.     CF clear if successful
  1739.     AX destroyed
  1740. SeeAlso: AH=7Bh
  1741. --------U-B37D-------------------------------
  1742. INT B3 - ZIPKEY - REQUEST POP UP
  1743.     AH = 7Dh
  1744.     BL = index number to simulate pressing a hotkey
  1745.         FFh for immediate popup with no playback on return
  1746. Return: CF set on error
  1747.         AL = error code
  1748.         FDh already busy with another request
  1749.         FEh illegal function
  1750.     CF clear if successful
  1751.         AX destroyed
  1752.         window popped up and was closed by the user
  1753. SeeAlso: AH=70h
  1754. --------U-B37E-------------------------------
  1755. INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION
  1756.     AH = 7Eh
  1757.     DX = zipcode region (0-999)
  1758.     ES:DI -> buffer for name
  1759. Return: CF set on error
  1760.         AL = FFh region does not exist
  1761.     CF clear if successful
  1762.         AL = ZIPKEY state code
  1763.         ES:DI points one byte beyond end of name
  1764. SeeAlso: AH=76h
  1765. --------U-B37F-------------------------------
  1766. INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS
  1767.     AH = 7Fh
  1768.     BL = function
  1769.         00h turn off hotkeys
  1770.         01h turn on hotkeys
  1771.         02h return hotkey status
  1772.         03h toggle hotkey status
  1773. Return: AL = hotkey status
  1774.         00h off
  1775.         01h on
  1776. --------U-B380-------------------------------
  1777. INT B3 - ZIPKEY v2.0+ - DETERMINE STATE FOR AREA CODE
  1778.     AH = 80h
  1779.     BX = telephone area code (decimal)
  1780. Return: CF clear if successful
  1781.         AL = ZIPKEY state code
  1782.         DX = first ZIP region for state (03E8h if Canada)
  1783.         CX = number of ZIP regions in state
  1784.     CF set on error
  1785.         AL = FFh
  1786.         DX = 03E9h
  1787. --------r-B4---------------------------------
  1788. INT B4 - IBM ROM BASIC - used while in interpreter
  1789. Notes:    called by ROM BASIC
  1790.     BASIC.COM/BASICA.COM do not restore vector on termination
  1791. --------r-B4---------------------------------
  1792. INT B4 - StackMan - REQUEST NEW STACK
  1793. Return: SS:SP -> new stack
  1794. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  1795.       which functions as a replacement for the DOS STACK= command as well
  1796.       as permitting multiple TSRs to share a pool of stack space
  1797. Note:    the installation check consists of testing for the string "STACKXXX" at
  1798.       offset 0Ah from the interrupt handler
  1799. SeeAlso: INT 2F/AX=C9FFh,INT B5"STACKMAN"
  1800. Index:    installation check;STACKMAN
  1801. --------r-B5---------------------------------
  1802. INT B5 - IBM ROM BASIC - used while in interpreter
  1803. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1804.     BASIC.COM/BASICA.COM do not restore vector on termination
  1805. SeeAlso: INT 80"BASIC",INT B4"BASIC",INT B6"BASIC"
  1806. --------r-B5---------------------------------
  1807. INT B5 - StackMan - RESTORE ORIGINAL STACK
  1808.     SS:SP -> stack returned by INT B4
  1809. Return: SS:SP restored to value before INT B4
  1810. SeeAlso: INT 2F/AX=C9FFh,INT B4"StackMan"
  1811. --------m-B5---------------------------------
  1812. INT B5 U - Netroom NETSWAP4 - ???
  1813.     ???
  1814. Return: ???
  1815. SeeAlso: INT 31/AH=57h
  1816. --------r-B6---------------------------------
  1817. INT B6 - IBM ROM BASIC - used while in interpreter
  1818. Notes:    called by ROM BASIC
  1819.     BASIC.COM/BASICA.COM do not restore vector on termination
  1820. SeeAlso: INT 80"BASIC",INT B5"BASIC",INT B7"BASIC"
  1821. --------y-B6---------------------------------
  1822. INT B6 - (NOT A VECTOR!) - USED BY TBFENCE
  1823. Program: TBFence is a security program by ESaSS B.V. which transparently
  1824.       encrypts floppies and optionally allows only encrypted diskettes to
  1825.       be accessed
  1826. Note:    the low word of this vector (0000h:02D8h) contains the segment of the
  1827.       TBFence INT 13h code, which starts with the signature word E487h;
  1828.       this forms the installation check
  1829.     the highest byte of this vector contains the start of a FAR JMP
  1830.       instruction to ???
  1831. SeeAlso: INT B7"TBFENCE"
  1832. Index:    installation check;TBFence
  1833. --------r-B7---------------------------------
  1834. INT B7 - IBM ROM BASIC - used while in interpreter
  1835. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1836.     BASIC.COM/BASICA.COM do not restore vector on termination
  1837. SeeAlso: INT 80"BASIC",INT B6"BASIC",INT B8"BASIC"
  1838. --------y-B7---------------------------------
  1839. INT B7 - TBFENCE - ???
  1840. SeeAlso: INT B6"TBFENCE"
  1841. --------r-B8---------------------------------
  1842. INT B8 - IBM ROM BASIC - used while in interpreter
  1843. Notes:    called by ROM BASIC
  1844.     BASIC.COM/BASICA.COM do not restore vector on termination
  1845. SeeAlso: INT 80"BASIC",INT B7"BASIC",INT B9"BASIC"
  1846. --------r-B9---------------------------------
  1847. INT B9 - IBM ROM BASIC - used while in interpreter
  1848. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1849.     BASIC.COM/BASICA.COM do not restore vector on termination
  1850. --------r-BA---------------------------------
  1851. INT BA - IBM ROM BASIC - used while in interpreter
  1852. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1853.     BASIC.COM/BASICA.COM do not restore vector on termination
  1854. --------r-BB---------------------------------
  1855. INT BB - IBM ROM BASIC - used while in interpreter
  1856. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1857.     BASIC.COM/BASICA.COM do not restore vector on termination
  1858. --------r-BC---------------------------------
  1859. INT BC - IBM ROM BASIC - used while in interpreter
  1860. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1861.     BASIC.COM/BASICA.COM do not restore vector on termination
  1862. --------r-BD---------------------------------
  1863. INT BD - IBM ROM BASIC - used while in interpreter
  1864. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1865.     BASIC.COM/BASICA.COM do not restore vector on termination
  1866. --------r-BE---------------------------------
  1867. INT BE - IBM ROM BASIC - used while in interpreter
  1868. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1869.     BASIC.COM/BASICA.COM do not restore vector on termination
  1870. SeeAlso: INT 80"BASIC",INT BD"BASIC",INT BF"BASIC"
  1871. --------Q-BE---------------------------------
  1872. INT BE - DESQview/X - ???
  1873. Note:    points at an IRET
  1874. SeeAlso: INT 15/AX=BFDEh/BX=0006h,INT 63"DESQview"
  1875. --------r-BF---------------------------------
  1876. INT BF - IBM ROM BASIC - used while in interpreter
  1877. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1878.     BASIC.COM/BASICA.COM do not restore vector on termination
  1879. SeeAlso: INT 80"BASIC",INT BE"BASIC",INT C0"BASIC"
  1880. --------r-C0---------------------------------
  1881. INT C0 - IBM ROM BASIC - used while in interpreter
  1882. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1883.     BASIC.COM/BASICA.COM do not restore vector on termination
  1884. SeeAlso: INT 80"BASIC",INT BF"BASIC",INT C1"BASIC"
  1885. --------d-C0---------------------------------
  1886. INT C0 - AMI BIOS - DRIVE 0 DATA
  1887. Note:    this vector is used by some AMI BIOSes to store the first four bytes
  1888.       of the hard disk parameter table
  1889. SeeAlso: INT 41,INT 60"Adaptec",INT C1"AMI",INT C2"AMI",INT C3"AMI",INT C4"AMI"
  1890. --------r-C1---------------------------------
  1891. INT C1 - IBM ROM BASIC - used while in interpreter
  1892. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1893.     BASIC.COM/BASICA.COM do not restore vector on termination
  1894. SeeAlso: INT 80"BASIC",INT C0"BASIC",INT C2"BASIC"
  1895. --------d-C1---------------------------------
  1896. INT C1 - AMI BIOS - DRIVE 0 DATA
  1897. Note:    this vector is used by some AMI BIOSes to store the second four bytes
  1898.       of the hard disk parameter table
  1899. SeeAlso: INT 41,INT 60"Adaptec",INT C0"AMI",INT C2"AMI",INT C3"AMI"
  1900. --------r-C2---------------------------------
  1901. INT C2 - IBM ROM BASIC - used while in interpreter
  1902. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1903.     BASIC.COM/BASICA.COM do not restore vector on termination
  1904. SeeAlso: INT 80"BASIC",INT C1"BASIC",INT C3"BASIC"
  1905. --------d-C2---------------------------------
  1906. INT C2 - AMI BIOS - DRIVE 0 DATA
  1907. Note:    this vector is used by some AMI BIOSes to store the third four bytes
  1908.       of the hard disk parameter table
  1909. SeeAlso: INT 41,INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C3"AMI"
  1910. --------r-C3---------------------------------
  1911. INT C3 - IBM ROM BASIC - used while in interpreter
  1912. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1913.     BASIC.COM/BASICA.COM do not restore vector on termination
  1914. SeeAlso: INT 80"BASIC",INT C2"BASIC",INT C4"BASIC"
  1915. --------d-C3---------------------------------
  1916. INT C3 - AMI BIOS - DRIVE 0 DATA
  1917. Note:    this vector is used by some AMI BIOSes to store the final four bytes
  1918.       of the hard disk parameter table
  1919. SeeAlso: INT 41,INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C2"AMI"
  1920. --------r-C4---------------------------------
  1921. INT C4 - IBM ROM BASIC - used while in interpreter
  1922. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1923.     BASIC.COM/BASICA.COM do not restore vector on termination
  1924. SeeAlso: INT 80"BASIC",INT C3"BASIC",INT C5"BASIC"
  1925. --------d-C4---------------------------------
  1926. INT C4 - AMI BIOS - DRIVE 1 DATA
  1927. Note:    this vector is used by some AMI BIOSes to store the first four bytes
  1928.       of the second hard disk's parameter table
  1929. SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C5"AMI",INT C6"AMI",INT C7"AMI"
  1930. --------r-C5---------------------------------
  1931. INT C5 - IBM ROM BASIC - used while in interpreter
  1932. Notes:    called by ROM BASIC
  1933.     BASIC.COM/BASICA.COM do not restore vector on termination
  1934. SeeAlso: INT 80"BASIC",INT C4"BASIC",INT C6"BASIC"
  1935. --------d-C5---------------------------------
  1936. INT C5 - AMI BIOS - DRIVE 1 DATA
  1937. Note:    this vector is used by some AMI BIOSes to store the second four bytes
  1938.       of the second hard disk's parameter table
  1939. SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C4"AMI",INT C6"AMI",INT C7"AMI"
  1940. --------r-C6---------------------------------
  1941. INT C6 - IBM ROM BASIC - used while in interpreter
  1942. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1943.     BASIC.COM/BASICA.COM do not restore vector on termination
  1944. SeeAlso: INT 80"BASIC",INT C5"BASIC",INT C7"BASIC"
  1945. --------r-C6---------------------------------
  1946. INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86
  1947. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1948.       the older interrupts
  1949. SeeAlso: INT 86"APL"
  1950. --------d-C6---------------------------------
  1951. INT C6 - AMI BIOS - DRIVE 1 DATA
  1952. Note:    this vector is used by some AMI BIOSes to store the third four bytes
  1953.       of the second hard disk's parameter table
  1954. SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C4"AMI",INT C5"AMI",INT C7"AMI"
  1955. --------r-C7---------------------------------
  1956. INT C7 - IBM ROM BASIC - used while in interpreter
  1957. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1958.     BASIC.COM/BASICA.COM do not restore vector on termination
  1959. SeeAlso: INT 80"BASIC",INT C6"BASIC",INT C8"BASIC"
  1960. --------r-C7---------------------------------
  1961. INT C7 - APL*PLUS/PC - ???
  1962. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1963.       the older interrupts
  1964. SeeAlso: INT 87"APL"
  1965. --------d-C7---------------------------------
  1966. INT C7 - AMI BIOS - DRIVE 1 DATA
  1967. Note:    this vector is used by some AMI BIOSes to store the final four bytes
  1968.       of the second hard disk's parameter table
  1969. SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C4"AMI",INT C5"AMI",INT C6"AMI"
  1970. --------r-C8---------------------------------
  1971. INT C8 - IBM ROM BASIC - used while in interpreter
  1972. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1973.     BASIC.COM/BASICA.COM do not restore vector on termination
  1974. SeeAlso: INT 80"BASIC",INT C7"BASIC",INT C9"BASIC"
  1975. --------r-C8---------------------------------
  1976. INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88
  1977. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1978.       the older interrupts
  1979. SeeAlso: INT 88"APL"
  1980. --------r-C9---------------------------------
  1981. INT C9 - IBM ROM BASIC - used while in interpreter
  1982. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1983.     BASIC.COM/BASICA.COM do not restore vector on termination
  1984. SeeAlso: INT 80"BASIC",INT C8"BASIC",INT CA"BASIC"
  1985. --------r-C9---------------------------------
  1986. INT C9 - APL*PLUS/PC - ???
  1987. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1988.       the older interrupts
  1989. SeeAlso: INT 89"APL"
  1990. --------r-CA---------------------------------
  1991. INT CA - IBM ROM BASIC - used while in interpreter
  1992. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1993.     BASIC.COM/BASICA.COM do not restore vector on termination
  1994. SeeAlso: INT 80"BASIC",INT C9"BASIC",INT CB"BASIC"
  1995. --------r-CA---------------------------------
  1996. INT CA - APL*PLUS/PC - PRINT SCREEN
  1997. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1998.       the older interrupts
  1999. SeeAlso: INT 8A"APL"
  2000. --------r-CB---------------------------------
  2001. INT CB - IBM ROM BASIC - used while in interpreter
  2002. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2003.     BASIC.COM/BASICA.COM do not restore vector on termination
  2004. SeeAlso: INT 80"BASIC",INT CA"BASIC",INT CC"BASIC"
  2005. --------r-CB---------------------------------
  2006. INT CB - APL*PLUS/PC - BEEP
  2007. Notes:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  2008.       the older interrupts
  2009.     same as printing a ^G via INT 21/AH=02h
  2010. SeeAlso: INT 8B"APL"
  2011. --------r-CC---------------------------------
  2012. INT CC - IBM ROM BASIC - used while in interpreter
  2013. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2014.     BASIC.COM/BASICA.COM do not restore vector on termination
  2015. SeeAlso: INT 80"BASIC",INT CB"BASIC",INT CD"BASIC"
  2016. --------r-CC---------------------------------
  2017. INT CC - APL*PLUS/PC - CLEAR SCREEN MEMORY
  2018.     AX = flag
  2019.         0000h do not save display attributes
  2020.         0001h save attributes
  2021. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  2022.       the older interrupts
  2023. SeeAlso: INT 8C"APL"
  2024. --------r-CD---------------------------------
  2025. INT CD - IBM ROM BASIC - used while in interpreter
  2026. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2027.     BASIC.COM/BASICA.COM do not restore vector on termination
  2028. SeeAlso: INT 80"BASIC",INT CC"BASIC",INT CE"BASIC"
  2029. --------r-CD---------------------------------
  2030. INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2031. --------r-CE---------------------------------
  2032. INT CE - IBM ROM BASIC - used while in interpreter
  2033. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2034.     BASIC.COM/BASICA.COM do not restore vector on termination
  2035. SeeAlso: INT 80"BASIC",INT CD"BASIC",INT CF"BASIC"
  2036. --------r-CE---------------------------------
  2037. INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2038. --------r-CF---------------------------------
  2039. INT CF - IBM ROM BASIC - used while in interpreter
  2040. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2041.     BASIC.COM/BASICA.COM do not restore vector on termination
  2042. SeeAlso: INT 80"BASIC",INT CE"BASIC",INT D0"BASIC"
  2043. --------r-CF---------------------------------
  2044. INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION
  2045. SeeAlso: INT E0"APL"
  2046. --------r-D0---------------------------------
  2047. INT D0 - IBM ROM BASIC - used while in interpreter
  2048. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2049.     BASIC.COM/BASICA.COM do not restore vector on termination
  2050. SeeAlso: INT 80"BASIC",INT CF"BASIC",INT D1"BASIC"
  2051. --------r-D0---------------------------------
  2052. INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2053. --------U-D0---------------------------------
  2054. INT D0 - [not a vector!] - NJFRERAM SIGNATURE VECTOR
  2055. Program: NJFRERAM is a resident free-memory display utility by Mike "Nifty
  2056.       James" Blaszczak
  2057. Note:    if NJFRERAM is installed, this vector points at the signature "NJ"
  2058. Index:    installation check;NJFRERAM
  2059. --------r-D1---------------------------------
  2060. INT D1 - IBM ROM BASIC - used while in interpreter
  2061. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2062.     BASIC.COM/BASICA.COM do not restore vector on termination
  2063. SeeAlso: INT 80"BASIC",INT D0"BASIC",INT D2"BASIC"
  2064. --------r-D1---------------------------------
  2065. INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2066. --------r-D2---------------------------------
  2067. INT D2 - IBM ROM BASIC - used while in interpreter
  2068. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2069.     BASIC.COM/BASICA.COM do not restore vector on termination
  2070. SeeAlso: INT 80"BASIC",INT D1"BASIC",INT D3"BASIC"
  2071. --------r-D2---------------------------------
  2072. INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2073. --------r-D3---------------------------------
  2074. INT D3 - IBM ROM BASIC - used while in interpreter
  2075. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2076.     BASIC.COM/BASICA.COM do not restore vector on termination
  2077. SeeAlso: INT 80"BASIC",INT D2"BASIC",INT D4"BASIC"
  2078. --------r-D3---------------------------------
  2079. INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2080. --------v-D3---------------------------------
  2081. INT D3 - VIRUS - "Antiexe" - RELOCATED INT 13
  2082. SeeAlso: INT 9F"VIRUS"
  2083. --------r-D4---------------------------------
  2084. INT D4 - IBM ROM BASIC - used while in interpreter
  2085. Notes:    called by ROM BASIC
  2086.     BASIC.COM/BASICA.COM do not restore vector on termination
  2087. SeeAlso: INT 80"BASIC",INT D3"BASIC",INT D5"BASIC"
  2088. --------r-D4---------------------------------
  2089. INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2090. --------O-D400-------------------------------
  2091. INT D4 O - PC-MOS/386 v5.01 - OBSOLETE FUNCTIONS
  2092.     AH = 00h and 01h
  2093. Return: nothing
  2094. Desc:    PC-MOS/386 v5.01 reports that these functions are no longer supported
  2095.       and enters an endless loop
  2096. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2097.       system by The Software Link, Inc.
  2098. --------O-D402-------------------------------
  2099. INT D4 - PC-MOS/386 v3.0+ - GET SYSTEM CONTROL BLOCK POINTER
  2100.     AH = 02h
  2101. Return: AX = 0000h
  2102.     ES:BX -> System Control Block in V86 mode (see #3130)
  2103.     ES:EBX -> System Control Block in native mode (see #3130)
  2104. Note:    superseded by AH=26h
  2105. SeeAlso: AH=04h,AH=10h,AH=26h,AH=28h,AH=29h,AH=2Ah,INT 21/AX=3000h,INT 38
  2106.  
  2107. Format of PC-MOS/386 System Control Block:
  2108. Offset    Size    Description    (Table 3130)
  2109.  00h    WORD    pointer to first TCB in chain
  2110.  02h 17 BYTEs    reserved
  2111.  13h    WORD    pointer to current task's TCB
  2112.  15h    WORD    pointer to TCB of visible (console) task
  2113. --------O-D403-------------------------------
  2114. INT D4 - PC-MOS/386 v5.01 - GET/SET EXTENDED DIRECTORY INFORMATION
  2115.     AH = 03h
  2116.     AL = subfunction (00h get, 01h set)
  2117.     DS:(E)DX -> pathname
  2118.     ES:(E)BX -> 10-byte buffer for directory information (see #3131)
  2119. Return: CF clear if successful
  2120.         AL = permitted access level for file (00h-03h)
  2121.         ES:(E)BX -> modified buffer (AL=01h on entry)
  2122.     CF set on error
  2123.         AX = error code (see #0960 at INT 21/AH=59h)
  2124. Notes:    BX/DX are used in V86 mode, EBX/EDX in native mode
  2125.     the file class cannot be changed for files because it affects the
  2126.       encryption method, but directories can have their classes changed
  2127.  
  2128. Format of PC-MOS/386 directory information:
  2129. Offset    Size    Description    (Table 3131)
  2130.  00h    BYTE    reserved (0)
  2131.  01h    BYTE    file class ('A'-'Z' or 00h)
  2132.  02h    DWORD    user ID of file creator
  2133.  06h    WORD    file creation time (see #0951 at INT 21/AX=5700h)
  2134.  08h    WORD    file creation date (see #0952 at INT 21/AX=5700h)
  2135. --------O-D404-------------------------------
  2136. INT D4 - PC-MOS/386 v3.0+ - GET TASK CONTROL BLOCK
  2137.     AH = 04h
  2138.     BX = task ID or FFFFh for calling task
  2139. Return: CF clear if successful
  2140.         ES = segment of Task Control Block (TCB) (see #3132)
  2141.     CF set on error
  2142.         AX = error code (see #0960 at INT 21/AH=59h)
  2143. Note:    superseded by AH=27h
  2144. SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah,INT 38
  2145.  
  2146. Format of PC-MOS/386 Task Control Block:
  2147. Offset    Size    Description    (Table 3132)
  2148.  00h    BYTE    signature byte "H" if allocated from system memory pool
  2149.  01h    BYTE    header block ID, "T" = TCB
  2150.  02h    WORD    length of block in paragraphs
  2151.  04h    WORD    segment address of next header block (0000h if last)
  2152.  06h    WORD    segment address of previous header block (0000h if first)
  2153.  08h    WORD    pointer to next TCB
  2154.  0Ah    WORD    pointer to previous TCB
  2155.  0Ch    WORD    pointer to associated TCB (if applicable)
  2156.  0Eh    WORD    reserved
  2157. ---TCB---
  2158.  10h    WORD    TCB task ID
  2159.  12h    WORD    native context save area
  2160.  14h    WORD    start address of task
  2161.  16h    WORD    end address of task
  2162.  18h    BYTE    task priority
  2163.  19h    BYTE    task time slice
  2164.  1Ah    BYTE    "TCBWAIT" run status of task
  2165.  1Bh    BYTE    "TCBSTAT" what the task is waiting for
  2166.  1Ch    DWORD    address of polling routine
  2167.  20h    BYTE    error code from last function call
  2168.  21h 11 BYTEs    name of currently executing task
  2169.  2Ch  4 BYTEs    ???
  2170.  30h    BYTE    keyboard disabled if bit 1 set
  2171.  31h    BYTE    current shift state and toggles
  2172.  32h  2 BYTEs    ???
  2173.  34h    BYTE    current video mode
  2174.  35h    BYTE    current video page
  2175.  36h    BYTE    number of text columns per screen
  2176.  37h    BYTE    number of text rows per screen
  2177.  38h    WORD    length of video buffer
  2178.  3Ah    WORD    video page length
  2179.  3Ch    WORD    apge start address in video RAM
  2180.  3Eh  4 WORDs    current cursor positions for four screen pages
  2181.  46h  8 BYTEs    ???
  2182.  4Eh    WORD    current cursor type
  2183.  50h    BYTE    current palette setting
  2184.  51h    BYTE    original video mode
  2185.  52h    BYTE    start CRT row (00h or 01h)
  2186.  53h    BYTE    video RAM in task active
  2187.  54h    WORD    handle of video save area
  2188.  56h    WORD    page count of video save area
  2189.  58h    WORD    segment address of video save area
  2190.  5Ah    WORD    poitner to first Task File Block (see #3135)
  2191.  5Ch    WORD    pointer to first Current Directory Block (see #3138)
  2192.  5Eh    WORD    pointer to active Current Directory Block (see #3138)
  2193.  60h    BYTE    number of drives
  2194.  61h    BYTE    current drive (0=A:, etc.)
  2195.  62h    DWORD    disk transfer address
  2196.  66h  4 BYTEs    ???
  2197.  6Ah    BYTE    verify flag (nonzero = on)
  2198.  6Bh    BYTE    break flag (nonzero = on)
  2199.  6Ch    WORD    share/lock retry count
  2200.  6Eh    WORD    ticks between share/lock retries
  2201.  70h    BYTE    remote printer flags (see #3133)
  2202.  71h    BYTE    ETX/ACK delay count
  2203.  72h    WORD    spooler segment address
  2204.  74h  2 BYTEs    ???
  2205.  76h  3 BYTEs    remote printer redirection for LPT1 through LPT3 (see #3134)
  2206.  79h  2 BYTEs    ???
  2207.  7Bh    DWORD    offset of username in TCB
  2208.  7Fh    BYTE    current output class
  2209.  80h  7 BYTEs    protection access rights, 2 bits per class (writeable!)
  2210.  87h 122 BYTEs    ???
  2211. 101h    BYTE    TCB sleep downcounter value
  2212. 102h 20 BYTEs    ???
  2213. 116h    BYTE    last scan code
  2214.     ...
  2215. 5D0h    DWORD    far pointer to Device Driver Terminal's entry point
  2216. 5D4h    WORD    offset of logical screen
  2217. 5D6h    WORD    segment of logical screen
  2218. 5D8h    WORD    cursor offset within page
  2219. 5DAh    BYTE    screen columns
  2220. 5DBh    WORD    async port number (0000h = none)
  2221. 5DDh    DWORD    physical baudrate
  2222. 5E1h 19 BYTEs    reserved for Device Driver Terminal (DDT)
  2223.     ...
  2224. 7A6h    DWORD    far pointer to unregister calling chain
  2225.  
  2226. Bitfields for PC-MOS/386 remote printer flags:
  2227. Bit(s)    Description    (Table 3133)
  2228.  0    LPT1 to terminal
  2229.  1    LPT2 to terminal
  2230.  2    LPT3 to terminal
  2231.  3    escape to printer pending
  2232.  4    use XON/XOFF
  2233.  5    use ETX/ACK
  2234.  6    waiting for ACK or XON
  2235.  7    transparent printing on
  2236.  
  2237. (Table 3134)
  2238. Values for PC-MOS/386 remote printer redirection:
  2239.  00h    not redirected
  2240.  01h    redirected to COM1
  2241.  ...
  2242.  18h    redirected to COM24
  2243.  51h    redirected to LPT1
  2244.  52h    redirected to LPT2
  2245.  53h    redirected to LPT3
  2246.  
  2247. Format of PC-MOS/386 Task File Block:
  2248. Offset    Size    Description    (Table 3135)
  2249.  00h    BYTE    signature byte "H" if allocated from system memory pool
  2250.  01h    BYTE    header block ID, "F" = task file block
  2251.  02h    WORD    length of block in paragraphs
  2252.  04h    WORD    segment address of next header block (0000h if last)
  2253.  06h    WORD    segment address of previous header block (0000h if first)
  2254.  08h    WORD    pointer to next TCB
  2255.  0Ah    WORD    pointer to previous TCB
  2256.  0Ch    WORD    pointer to associated TCB (if applicable)
  2257.  0Eh    WORD    reserved
  2258. ---TFB---
  2259.  10h    WORD    segment address of next TFB
  2260.  12h    WORD    segment address of previous TFB
  2261.  14h    WORD    segment address of TFB's Global File Block (see #3137)
  2262.  16h    WORD    segment address of owner's PSP
  2263.  18h    WORD    file handle
  2264.  1Ah  3 BYTEs    ???
  2265.  1Dh    DWORD    file position
  2266.  21h  4 BYTEs    ???
  2267.  25h    BYTE    IOCTL flags (see #3136)
  2268.  26h  2 BYTEs    ???
  2269.  
  2270. Bitfields for PC-MOS/386 IOCTL flags:
  2271. Bit(s)    Description    (Table 3136)
  2272.  0    stdin
  2273.  1    stdout
  2274.  2    null device
  2275.  3    clock device
  2276.  4    reserved
  2277.  5    ASCII mode instead of binary
  2278.  6    EOF encountered on input
  2279.  7    device rather than file
  2280.  
  2281. Format of PC-MOS/386 Global File Block:
  2282. Offset    Size    Description    (Table 3137)
  2283.  00h    BYTE    signature byte "H" if allocated from system memory pool
  2284.  01h    BYTE    header block ID, "G" = global file block
  2285.  02h    WORD    length of block in paragraphs
  2286.  04h    WORD    segment address of next header block (0000h if last)
  2287.  06h    WORD    segment address of previous header block (0000h if first)
  2288.  08h    WORD    pointer to next TCB
  2289.  0Ah    WORD    pointer to previous TCB
  2290.  0Ch    WORD    pointer to associated TCB (if applicable)
  2291.  0Eh    WORD    reserved
  2292. ---GFB---
  2293.  10h 10 BYTEs    ???
  2294.  1Ah    WORD    file attribute
  2295.  1Ch    BYTE    ???
  2296.  1Dh    DWORD    address of device driver
  2297.  21h    WORD    first cluster
  2298.  23h    WORD    time of last modification
  2299.  25h    WORD    date of last modification
  2300.  27h    DWORD    size of file in bytes
  2301.  2Bh 11 BYTEs    ???
  2302.  36h 11 BYTEs    device name or FCB-format filename
  2303.  41h    WORD    segment address of TFB list
  2304.  43h    WORD    segment address of first RLB (see #3140) (0000h = none)
  2305.  45h    BYTE    flag: nonzero if GFB refers to character device
  2306.  46h    WORD    address of Block Device Block (see #3139)
  2307.  48h    WORD    sector of file's directory entry
  2308.  4Ah    WORD    high word of file's directory entry
  2309.  4Ch    WORD    ofsset of directory entry within sector
  2310.  
  2311. Format of PC-MOS/386 Current Directory Block:
  2312. Offset    Size    Description    (Table 3138)
  2313.  00h    BYTE    signature byte "H" if allocated from system memory pool
  2314.  01h    BYTE    header block ID, "C" = current directory block
  2315.  02h    WORD    length of block in paragraphs
  2316.  04h    WORD    segment address of next header block (0000h if last)
  2317.  06h    WORD    segment address of previous header block (0000h if first)
  2318.  08h    WORD    pointer to next TCB
  2319.  0Ah    WORD    pointer to previous TCB
  2320.  0Ch    WORD    pointer to associated TCB (if applicable)
  2321.  0Eh    WORD    reserved
  2322. ---CDB---
  2323.  10h    BYTE    drive number
  2324.  11h    BYTE    ???
  2325.  12h 64 BYTEs    directory name
  2326.  52h    WORD    first directory cluster (0000h = root)
  2327.  
  2328. Format of PC-MOS/386 Block Device Block:
  2329. Offset    Size    Description    (Table 3139)
  2330.  00h    BYTE    signature byte "H" if allocated from system memory pool
  2331.  01h    BYTE    header block ID, "B" = block device block
  2332.  02h    WORD    length of block in paragraphs
  2333.  04h    WORD    segment address of next header block (0000h if last)
  2334.  06h    WORD    segment address of previous header block (0000h if first)
  2335.  08h    WORD    pointer to next TCB
  2336.  0Ah    WORD    pointer to previous TCB
  2337.  0Ch    WORD    pointer to associated TCB (if applicable)
  2338.  0Eh    WORD    reserved
  2339. ---BDB---
  2340.  10h    BYTE    logical drive
  2341.  11h    BYTE    unit passed to driver
  2342.  12h    WORD    sector size
  2343.  14h    BYTE    cluster mask
  2344.  15h    BYTE    cluster shift count
  2345.  16h    WORD    starting sector of first FAT
  2346.  18h    BYTE    number of FATs
  2347.  19h    WORD    number of root directories
  2348.  1Bh    WORD    sector number of first data sector (cluster 0002h)
  2349.  1Dh    WORD    number of clusters + 1 (number of highest data cluster)
  2350.  1Fh    BYTE    number of sectors in FAT
  2351.  20h    WORD    beginning root directory sector number
  2352.  22h    DWORD    device driver address
  2353.  26h    BYTE    media descriptor byte
  2354.  27h  5 BYTEs    ???
  2355.  2Ch    BYTE    flag: volume > 32MB
  2356.  2Dh    BYTE    ???
  2357.  2Eh    BYTE    number of sectors per cluster
  2358.  2Fh    WORD    number of clusters on device
  2359.  31h    WORD    number of free clusters (FFFFh = unknown)
  2360.  33h    WORD    root directory cluster number
  2361.  35h    WORD    pointer to alias/subst string
  2362.  37h    WORD    TCB segment address of owner (0000h = none)
  2363.  
  2364. Format of PC-MOS/386 Record Lock Block:
  2365. Offset    Size    Description    (Table 3140)
  2366.  00h    BYTE    signature byte "H" if allocated from system memory pool
  2367.  01h    BYTE    header block ID, "R" = record lock block
  2368.  02h    WORD    length of block in paragraphs
  2369.  04h    WORD    segment address of next header block (0000h if last)
  2370.  06h    WORD    segment address of previous header block (0000h if first)
  2371.  08h    WORD    pointer to next TCB
  2372.  0Ah    WORD    pointer to previous TCB
  2373.  0Ch    WORD    pointer to associated TCB (if applicable)
  2374.  0Eh    WORD    reserved
  2375. ---RLB---
  2376.  10h    WORD    segment address of owner's PSP
  2377.  12h    WORD    segment address of Global File Block (see #3137)
  2378.  14h    WORD    segment address of owner's Task File Block (see #3135)
  2379.  16h    DWORD    file offset of locked region start
  2380.  1Ah    DWORD    length of locked region
  2381.  1Eh    WORD    owner's handle for file
  2382. --------O-D407-------------------------------
  2383. INT D4 - PC-MOS/386 v3.0+ - WAIT FOR EVENT
  2384.     AH = 07h
  2385.     AL = events to monitor (see #3141)
  2386.     BX = number of timer ticks until timeout if AL bit 1 set
  2387.     CX = bitmap of IRQs to monitor if AL bit 2 set
  2388.         (bit 0 = IRQ0 .. bit 15 = IRQ15)
  2389.     DX = port to monitor if AL bit 3 set
  2390. Return: CF clear if successful
  2391.         AL = type of event which woke up task (see #3141)
  2392.         CX = IRQ (if any) which awakened task
  2393.         DX = port (if any) which awakened task
  2394.     CF set on error
  2395.         AX = error code (see #0960 at INT 21/AH=59h)
  2396. Note:    a device driver may make this call with AL=00h, which indicates that
  2397.       the driver is responsible for setting and clearing the TCBWAIT field
  2398.       in the TCB.  To put task to sleep, set TCBWAIT bits 2-0 to 001; to
  2399.       reawaken it, set bit 1 (leaving other bits unchanged)
  2400. SeeAlso: AH=04h,INT 16/AH=00h,INT 38
  2401.  
  2402. Bitfields for PC-MOS/386 events to monitor:
  2403. Bit(s)    Description    (Table 3141)
  2404.  0    keystroke
  2405.  1    timeout
  2406.  2    IRQ
  2407.  3    port access
  2408.  7    return status of user poll routine (other ignored if set)
  2409. --------O-D410-------------------------------
  2410. INT D4 - PC-MOS/386 v3.0+ - ENTER/LEAVE NATIVE 386 EXECUTION MODE
  2411.     AH = 10h
  2412.     AL = direction (00h return to V86 mode, 01h enter native mode)
  2413.     CX = length in bytes of Native Context Area ( >=1024 )
  2414.     DX = segment of Native Context Area
  2415. Return: CF clear if successful
  2416.         running in desired mode at instruction following INT D4 call
  2417.         all segment registers converted to appropriate selectors/segments
  2418.     CF set on error
  2419.         AX = error code (see #0960 at INT 21/AH=59h)
  2420. Note:    MS-DOS calls are available in protected mode
  2421. SeeAlso: AH=11h,AH=12h,AH=13h,INT 2F/AX=1687h,INT 67/AX=DE0Ch,INT 38
  2422. --------O-D411-------------------------------
  2423. INT D4 - PC-MOS/386 v3.0+ - ALLOCATE NATIVE MODE MEMORY BLOCK
  2424.     AH = 11h
  2425.     EBX = block length in bytes
  2426. Return: CF clear if successful
  2427.         EBX = number of bytes actually allocated
  2428.         ES = selector for allocated block
  2429.     CF set on error
  2430.         AX = error code (see #0960 at INT 21/AH=59h)
  2431. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2432.       system by The Software Link, Inc.
  2433. Note:    the memory must be released before the program terminates
  2434. SeeAlso: AH=10h,AH=12h,INT 38
  2435. --------O-D412-------------------------------
  2436. INT D4 - PC-MOS/386 v3.0+ - FREE NATIVE MODE MEMORY BLOCK
  2437.     AH = 12h
  2438.     ES = selector for block to free
  2439. Return: CF clear if successful
  2440.     CF set on error
  2441.         AX = error code (see #0960 at INT 21/AH=59h)
  2442. SeeAlso: AH=10h,AH=11h,AH=13h,INT 38
  2443. --------O-D413-------------------------------
  2444. INT D4 - PC-MOS/386 v5.01 - GET ALIAS FOR SELECTOR (NATIVE MODE ONLY)
  2445.     AH = 13h
  2446.     AL = type of alias selector (00h data, 01h stack, 02h code)
  2447.     BX = selector
  2448. Return: CF clear if successful
  2449.         AX = new selector or 0000h if BX selector not found
  2450.     CF set on error
  2451.         AX = error code (see #0960 at INT 21/AH=59h)
  2452. SeeAlso: AH=11h,AH=12h
  2453. --------O-D416-------------------------------
  2454. INT D4 - PC-MOS/386 v5.01 - SET/CLEAR IRQ RESERVATION
  2455.     AH = 16h
  2456.     AL = function (00h clear, 01h set reservation)
  2457.     CX = IRQ number
  2458. Return: AX = status
  2459.         (0000h successful, 0001h currently reserved by another task)
  2460. SeeAlso: AH=07h,INT 14/AH=11h"PC-MOS"
  2461. --------O-D419-------------------------------
  2462. INT D4 - PC-MOS/386 v5.01 - GET TASK ID
  2463.     AH = 19h
  2464. Return: BX = caller's task ID
  2465. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2466.       system by The Software Link, Inc.
  2467. SeeAlso: AH=1Dh,AH=1Eh
  2468. --------O-D41A-------------------------------
  2469. INT D4 - PC-MOS/386 v5.01 - GET/SET TASK PRIORITY
  2470.     AH = 1Ah
  2471.     AL = subfunction (00h read, 01h set, 02h get and set)
  2472.     BX = task ID (FFFFh for current task)
  2473.     CL = new priority value
  2474. Return: CF clear if successful
  2475.         CL = current priority value
  2476.     CF set on error
  2477.         AX = error code (see #0960 at INT 21/AH=59h)
  2478. SeeAlso: AH=1Bh,AH=1Ch
  2479. --------O-D41B-------------------------------
  2480. INT D4 - PC-MOS/386 v5.01 - GET/SET TIME SLICE
  2481.     AH = 1Bh
  2482.     AL = subfunction (00h read, 01h set, 02h get and set)
  2483.     BX = task ID (FFFFh for current task) (see AH=19h)
  2484.     CL = new time slice value
  2485. Return: CF clear if successful
  2486.         CL = current time slice value
  2487.     CF set on error
  2488.         AX = error code (see #0960 at INT 21/AH=59h)
  2489. SeeAlso: AH=1Ah,AH=1Ch
  2490. --------O-D41C-------------------------------
  2491. INT D4 - PC-MOS/386 v5.01 - GET/SET KEYBOARD MODE
  2492.     AH = 1Ch
  2493.     AL = subfunction (00h enable, 01h disable, 02h get mode)
  2494.     BX = task ID (FFFFh for current task)
  2495. Return: CF clear if successful
  2496.         CL = current keyboard state
  2497.     CF set on error
  2498.         AX = error code (INT 21/AH=59h)
  2499. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2500.       system by The Software Link, Inc.
  2501. SeeAlso: AH=1Ah,AH=1Bh
  2502. --------O-D41D-------------------------------
  2503. INT D4 - PC-MOS/386 v5.01 - GET CURRENT PROGRAM NAME
  2504.     AH = 1Dh
  2505.     BX = task ID (FFFFh for current task) (see AH=19h)
  2506.     ES:DI -> buffer for program name (see #3142)
  2507. Return: CF clear if successful
  2508.         ES:DI buffer filled
  2509.     CF set on error
  2510.         AX = error code (see #0960 at INT 21/AH=59h)
  2511. SeeAlso: AH=19h,AH=1Eh
  2512.  
  2513. Format of PC-MOS/386 program name buffer:
  2514. Offset    Size    Description    (Table 3142)
  2515.  00h  8 BYTEs    filename
  2516.  08h  3 BYTEs    extension
  2517. --------O-D41E-------------------------------
  2518. INT D4 - PC-MOS/386 v5.01 - GET CURRENT USERNAME AND SECURITY CLASS
  2519.     AH = 1Eh
  2520.     BX = task ID (FFFFh for current task)
  2521.     ES:DI -> 4-byte buffer for username
  2522. Return: CF clear if successful
  2523.         CL = security class
  2524.         20h (' ') none
  2525.         41h-5Ah ('A'-'Z') security level
  2526.         ES:DI buffer filled
  2527.     CF set on error
  2528.         AX = error code (see #0960 at INT 21/AH=59h)
  2529. SeeAlso: AH=19h,AH=1Dh
  2530. --------O-D41F-------------------------------
  2531. INT D4 - PC-MOS/386 v5.01 - GET TASK PARTITION INFORMATION
  2532.     AH = 1Fh
  2533.     BX = task ID (FFFFh for current task) (see AH=19h)
  2534. Return: CF clear if successful
  2535.         CX = start segment of task
  2536.         DX = ending segment of task
  2537.     CF set on error
  2538.         AX = error code (see #0960 at INT 21/AH=59h)
  2539. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2540.       system by The Software Link, Inc.
  2541. SeeAlso: AH=2Dh
  2542. --------O-D420-------------------------------
  2543. INT D4 - PC-MOS/386 v5.01 - GET PORT AND BAUDRATE INFORMATION
  2544.     AH = 20h
  2545.     BX = task ID (FFFFh for current task) (see AH=19h)
  2546. Return: CF clear if successful
  2547.         CX = port number (0000h if none)
  2548.         DI:SI = baudrate (if CX nonzero)
  2549.     CF set on error
  2550.         AX = error code (see #0960 at INT 21/AH=59h)
  2551. SeeAlso: INT 14/AH=0Ch"FOSSIL"
  2552. --------O-D421-------------------------------
  2553. INT D4 - PC-MOS/386 v5.01 - REMOVE A TASK
  2554.     AH = 21h
  2555.     BX = task ID (FFFFh for current task) (see AH=19h)
  2556. Return: CF clear if successful
  2557.         AX = ASCII percentage of System Memory Pool used
  2558.         (AH = tens digit, AL = ones digit)
  2559.         DS,SI destroyed
  2560.     CF set on error
  2561.         AX = error code (see #0960 at INT 21/AH=59h)
  2562. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2563.       system by The Software Link, Inc.
  2564. SeeAlso: AH=22h
  2565. --------O-D422-------------------------------
  2566. INT D4 - PC-MOS/386 v5.01 - ADD A TASK TO THE SYSTEM
  2567.     AH = 22h
  2568.     DS:SI -> addtask data structure (see #3144)
  2569. Return: CF clear if successful
  2570.         ES = segment address of the new task's TCB data structure
  2571.     CF set on error
  2572.         AX = error code (see #3143)
  2573. SeeAlso: AH=21h
  2574.  
  2575. (Table 3143)
  2576. Values for PC-MOS/386 error code:
  2577.  08h    insufficient memory
  2578.  0Bh    invalid addtask structure format
  2579.  12h    insufficient available space in system memory pool
  2580.  1Fh    general failure
  2581.  55h    already allocated
  2582.  57h    if task already in use or invalid parameter
  2583.  
  2584. Format of PC-MOS/386 addtask data structure:
  2585. Offset    Size    Description    (Table 3144)
  2586.  00h    WORD    task size in KB (min 16KB)
  2587.  02h    WORD    task ID (0000h for automatic selection)
  2588.  04h    BYTE    task class (' ' or 'A'-'Z')
  2589.  05h    DWORD    -> ASCIZ name of task startup batchfile
  2590.  09h    DWORD    -> task's terminal driver (0000000h = background task)
  2591.  0Dh    WORD    task port
  2592.  0Fh    DWORD    task baud rate
  2593.  13h    DWORD    (ret) total extended memory
  2594.  17h    DWORD    (ret) number of 4K extended memory pages allocated
  2595.  1Bh    WORD    (ret) paragraphs of system memory pool allocated
  2596.  1Dh    WORD    (ret) system memory pool size in paragraphs
  2597.  1Fh    WORD    (ret) ASCII task percentage of system memory pool
  2598.  21h  3 BYTEs    reserved
  2599. --------O-D423-------------------------------
  2600. INT D4 - PC-MOS/386 v5.01 - CHANGE TERMINAL DRIVER
  2601.     AH = 23h
  2602.     BX = task ID (FFFFh for current task)
  2603.     DS:SI -> entry point of the new Device Driver Terminal
  2604. Return: CF clear if successful
  2605.     CF set on error
  2606.         AX = error code (see #0960 at INT 21/AH=59h)
  2607. --------O-D424-------------------------------
  2608. INT D4 U - PC-MOS/386 v5.01 - GET OPERATING SYSTEM SERIAL NUMBER
  2609.     AH = 24h
  2610. Return: DS:DX -> '$'-terminated string containing the serial number
  2611. --------O-D425-------------------------------
  2612. INT D4 - PC-MOS/386 v5.01 - IDENTIFY LOAD ADDRESS OF DEVICE DRIVER LOCATION
  2613.     AH = 25h
  2614.     DX = driver's CS value
  2615. Return: AX = segment address of driver in system memory pool
  2616.         (0000h if the driver is not within the system memory pool)
  2617. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2618.       system by The Software Link, Inc.
  2619. --------O-D426-------------------------------
  2620. INT D4 - PC-MOS/386 v5.01 - GET SYSTEM CONTROL BLOCK SEGMENT/SELECTOR
  2621.     AH = 26h
  2622. Return: DX = segment/selector of the System Control Block (see #3130)
  2623. Note:    this function supersedes AH=02h
  2624. SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah
  2625. --------O-D427-------------------------------
  2626. INT D4 - PC-MOS/386 v5.01 - GET TASK CONTROL BLOCK SEGMENT/SELECTOR
  2627.     AH = 27h
  2628.     BX = task ID (FFFFh if current task) (see AH=19h)
  2629. Return: CF clear if successful
  2630.         DX = segment/selector for the Task Control Block (see #3132)
  2631.     CF set on error
  2632.         AX = error code (INT 21/AH=59h)
  2633. Note:    this function supersedes AH=04h
  2634. SeeAlso: AH=26h,AH=28h,AH=29h,AH=2Ah
  2635. --------O-D428-------------------------------
  2636. INT D4 - PC-MOS/386 v5.01 - GET CONTROL BLOCK DATA FROM SCB OR TCB
  2637.     AH = 28h
  2638.     BX = offset into control block at which to start reading
  2639.     CX = number of bytes to read
  2640.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  2641.     ES:DI -> buffer for data
  2642. Return: CF clear if successful
  2643.     CF set on error
  2644.         AX = error code (see also INT 21/AH=59h)
  2645.         05h access denied due to an invalid segment/selector
  2646. SeeAlso: AH=26h,AH=27h,AH=29h,AH=2Ah
  2647. --------O-D429-------------------------------
  2648. INT D4 - PC-MOS/386 v5.01 - WRITE CONTROL BLOCK DATA INTO SCB OR TCB
  2649.     AH = 29h
  2650.     BX = offset into control block at which to start writing
  2651.     CX = number of bytes to write
  2652.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  2653.     DS:SI -> buffer containing data to be written
  2654. Return: CF clear if successful
  2655.     CF set on errro
  2656.         AX = error code (see also INT 21/AH=59h)
  2657.         05h access denied due to an invalid segment/selector
  2658. Note:     this function performs no bounds checking
  2659. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2660.       system by The Software Link, Inc.
  2661. SeeAlso: AH=26h,AH=27h,AH=28h,AH=2Ah
  2662. --------O-D42A-------------------------------
  2663. INT D4 - PC-MOS/386 v5.01 - SWAP CONTROL BLOCK DATA OF SCB OR TCB
  2664.     AH = 2Ah
  2665.     BX = offset into control block at which to start swap
  2666.     CX = number of bytes to swap
  2667.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  2668.     DS:SI -> buffer containing new data and to receive current data
  2669. Return: CF clear if successful
  2670.     CF set on error
  2671.         AX = error code (see also INT 21/AH=59h)
  2672.         05h access denied due to an invalid segment/selector
  2673. Note:    the interrupts are disabled during the swap to prevent corruption
  2674. SeeAlso: AH=26h,AH=27h,AH=28h,AH=29h
  2675. --------O-D42C-------------------------------
  2676. INT D4 - PC-MOS/386 v5.01 - GET/SET SPOOLER PARAMETERS
  2677.     AH = 2Ch
  2678.     AL = function
  2679.         00h set spooler timeout
  2680.         CX = timout value in seconds
  2681.         01h get spooler timeout
  2682.         Return: CX = current timeout in seconds
  2683.         02h get spooler parameters
  2684.         Return: CH = priority (00h-09h)
  2685.             CL = disposition (d, h, i, n, s)
  2686.             SI = class (a - z)
  2687.         03h set spooler parameters
  2688.         CH = priority (00h-09h)
  2689.         CL = disposition (d, h, i, n, s)
  2690.         SI = class (a - z)
  2691.         BX = task ID (FFFFh for current task)
  2692.         DX = LPT number
  2693. Return: CF clear if successful
  2694.     CF set on error
  2695.         AX = error code (see #0960 at INT 21/AH=59h)
  2696. SeeAlso: AH=00h,AH=02h,AH=03h
  2697. --------O-D42D-------------------------------
  2698. INT D4 - PC-MOS/386 v5.01 - GET MAXIMUM TASK SIZE
  2699.     AH = 2Dh
  2700. Return: DX = maximum task size in paragraphs
  2701.     BX = start address of task space
  2702. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2703.       system by The Software Link, Inc.
  2704. SeeAlso: AH=1Fh,AH=22h
  2705. --------r-D5---------------------------------
  2706. INT D5 - IBM ROM BASIC - used while in interpreter
  2707. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2708.     BASIC.COM/BASICA.COM do not restore vector on termination
  2709. SeeAlso: INT 80"BASIC",INT D4"BASIC",INT D6"BASIC"
  2710. --------r-D5---------------------------------
  2711. INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2712. --------r-D6---------------------------------
  2713. INT D6 - IBM ROM BASIC - used while in interpreter
  2714. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2715.     BASIC.COM/BASICA.COM do not restore vector on termination
  2716. SeeAlso: INT 80"BASIC",INT D5"BASIC",INT D7"BASIC"
  2717. --------r-D6---------------------------------
  2718. INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2719. --------r-D7---------------------------------
  2720. INT D7 - IBM ROM BASIC - used while in interpreter
  2721. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2722.     BASIC.COM/BASICA.COM do not restore vector on termination
  2723. SeeAlso: INT 80"BASIC",INT D6"BASIC",INT D8"BASIC"
  2724. --------r-D7---------------------------------
  2725. INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2726. --------r-D8---------------------------------
  2727. INT D8 - IBM ROM BASIC - used while in interpreter
  2728. Notes:    called by ROM BASIC
  2729.     BASIC.COM/BASICA.COM do not restore vector on termination
  2730. SeeAlso: INT 80"BASIC",INT D7"BASIC",INT D9"BASIC"
  2731. --------r-D8---------------------------------
  2732. INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2733. --------H-D8---------------------------------
  2734. INT D8 - Screen Thief v1.00 - RELOCATED IRQ0
  2735. Range:    INT 78h to INT E0h, selected by commandline switch
  2736. Note:    Screen Thief relocates IRQs 0 through 7 to INT D8 to INT DF by default,
  2737.       but may be directed via a commandline switch to use any range
  2738.       starting at a multiple of 8 between 78h and E0h
  2739. SeeAlso: INT 08"IRQ0",INT 2D/AL=10h"Screen Thief",INT 50"DESQview"
  2740. SeeAlso: INT D9"Screen Thief"
  2741. --------r-D9---------------------------------
  2742. INT D9 - IBM ROM BASIC - used while in interpreter
  2743. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2744.     BASIC.COM/BASICA.COM do not restore vector on termination
  2745. SeeAlso: INT 80"BASIC",INT D8"BASIC",INT DA"BASIC"
  2746. --------r-D9---------------------------------
  2747. INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2748. --------H-D9---------------------------------
  2749. INT D9 - Screen Thief v1.00 - RELOCATED IRQ1
  2750. Range:    INT 79h to INT E1h, selected by commandline switch
  2751. Note:    (see INT D8"Screen Thief")
  2752. SeeAlso: INT 09"IRQ1",INT D8"Screen Thief",INT DA"Screen Thief"
  2753. --------r-DA---------------------------------
  2754. INT DA - IBM ROM BASIC - used while in interpreter
  2755. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2756.     BASIC.COM/BASICA.COM do not restore vector on termination
  2757. SeeAlso: INT 80"BASIC",INT D9"BASIC",INT DB"BASIC"
  2758. --------r-DA---------------------------------
  2759. INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2760. --------H-DA---------------------------------
  2761. INT DA - Screen Thief v1.00 - RELOCATED IRQ2
  2762. Range:    INT 7Ah to INT E2h, selected by commandline switch
  2763. Note:    (see INT D8"Screen Thief")
  2764. SeeAlso: INT 0A"IRQ2",INT D9"Screen Thief",INT DB"Screen Thief"
  2765. --------r-DB---------------------------------
  2766. INT DB - IBM ROM BASIC - used while in interpreter
  2767. Notes:    called by ROM BASIC
  2768.     BASIC.COM/BASICA.COM do not restore vector on termination
  2769. SeeAlso: INT 80"BASIC",INT DA"BASIC",INT DC"BASIC"
  2770. --------r-DB---------------------------------
  2771. INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2772. --------H-DB---------------------------------
  2773. INT DB - Screen Thief v1.00 - RELOCATED IRQ3
  2774. Range:    INT 7Bh to INT E3h, selected by commandline switch
  2775. Note:    (see INT D8"Screen Thief")
  2776. SeeAlso: INT 0B"IRQ3",INT DA"Screen Thief",INT DC"Screen Thief"
  2777. --------u-DC---------------------------------
  2778. INT DC - PC/370 v4.1- - API
  2779. SeeAlso: INT 60"PC/370"
  2780. --------r-DC---------------------------------
  2781. INT DC - IBM ROM BASIC - used while in interpreter
  2782. Notes:    called by ROM BASIC
  2783.     BASIC.COM/BASICA.COM do not restore vector on termination
  2784. SeeAlso: INT 80"BASIC",INT DB"BASIC",INT DD"BASIC"
  2785. --------r-DC---------------------------------
  2786. INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2787. --------H-DC---------------------------------
  2788. INT DC - Screen Thief v1.00 - RELOCATED IRQ4
  2789. Range:    INT 7Ch to INT E4h, selected by commandline switch
  2790. Note:    (see INT D8"Screen Thief")
  2791. SeeAlso: INT 0C"IRQ4",INT DB"Screen Thief",INT DD"Screen Thief"
  2792. --------r-DD---------------------------------
  2793. INT DD - IBM ROM BASIC - used while in interpreter
  2794. Notes:    called by ROM BASIC
  2795.     BASIC.COM/BASICA.COM do not restore vector on termination
  2796. SeeAlso: INT 80"BASIC",INT DC"BASIC",INT DE"BASIC"
  2797. --------r-DD---------------------------------
  2798. INT DD - STSC APL*PLUS/PC v9.0 - PLACE KEYSTROKE EVENTS IN INPUT BUFFER
  2799.     BX = where to place keystrokes
  2800.         FFFFh insert before current buffer contents
  2801.         0000h replace current contents
  2802.         0001h insert after current contents
  2803.     CX = number of keystroke events to insert
  2804.     ES:SI -> data to be placed into buffer (list of WORD key codes)
  2805.         4000h + N = normal ASCII keystroke N (N = 00h to FFh)
  2806.         4100h + N = extended ASCII keystroke N (N = 03h to 84h)
  2807. SeeAlso: INT 16/AH=05h
  2808. --------H-DD---------------------------------
  2809. INT DD - Screen Thief v1.00 - RELOCATED IRQ5
  2810. Range:    INT 7Dh to INT E5h, selected by commandline switch
  2811. Note:    (see INT D8"Screen Thief")
  2812. SeeAlso: INT 0D"IRQ5",INT DC"Screen Thief",INT DE"Screen Thief"
  2813. --------r-DE---------------------------------
  2814. INT DE - IBM ROM BASIC - used while in interpreter
  2815. Notes:    called by ROM BASIC
  2816.     BASIC.COM/BASICA.COM do not restore vector on termination
  2817. SeeAlso: INT 80"BASIC",INT DD"BASIC",INT DF"BASIC"
  2818. --------r-DE---------------------------------
  2819. INT DE - APL*PLUS/PC - ???
  2820. Note:    appears to be the same as INT 16
  2821. --------H-DE---------------------------------
  2822. INT DE - Screen Thief v1.00 - RELOCATED IRQ6
  2823. Range:    INT 7Eh to INT E6h, selected by commandline switch
  2824. Note:    (see INT D8"Screen Thief")
  2825. SeeAlso: INT 0E"IRQ6",INT DD"Screen Thief",INT DF"Screen Thief"
  2826. --------b-DF---------------------------------
  2827. INT DF - Victor 9000/Sirius 1 - SuperBIOS
  2828. --------r-DF---------------------------------
  2829. INT DF - IBM ROM BASIC - used while in interpreter
  2830. Notes:    called by ROM BASIC
  2831.     BASIC.COM/BASICA.COM do not restore vector on termination
  2832. SeeAlso: INT 80"BASIC",INT DE"BASIC",INT E0"BASIC"
  2833. --------r-DF---------------------------------
  2834. INT DF - APL*PLUS/PC - SAME AS INT 10
  2835. SeeAlso: INT 10
  2836. --------H-DF---------------------------------
  2837. INT DF - Screen Thief v1.00 - RELOCATED IRQ7
  2838. Range:    INT 7Fh to INT E7h, selected by commandline switch
  2839. Note:    (see INT D8"Screen Thief")
  2840. SeeAlso: INT 0F"IRQ7",INT DE"Screen Thief"
  2841. --------r-E0---------------------------------
  2842. INT E0 - IBM ROM BASIC - used while in interpreter
  2843. Notes:    called by ROM BASIC
  2844.     BASIC.COM/BASICA.COM do not restore vector on termination
  2845. SeeAlso: INT 80"BASIC",INT DF"BASIC",INT E1"BASIC"
  2846. --------r-E0---------------------------------
  2847. INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION
  2848. SeeAlso: INT CF"APL"
  2849. --------v-E0---------------------------------
  2850. INT E0 - VIRUS - "Micro-128" - ???
  2851. Note:    Micro-128 also overwrites the upper half of the interrupt table
  2852. SeeAlso: INT 9E"VIRUS",INT F1"VIRUS"
  2853. ----------E0---------------------------------
  2854. INT E0 - DeskMate (Tandy) - DESK EXECUTIVE API
  2855.     AX = function code (numerous)
  2856.     parameters passed in BX, DX, ES, DI, and/or BP
  2857. Return: AX = return from function
  2858. Program: DeskMate is a proprietary GUI from Tandy distributed with several
  2859.       models of the Tandy 1000's, 2500's, 3000's, and laptops.  Retail
  2860.       and runtime versions also exist.  Some Tandy's are designed to
  2861.       boot directly into DeskMate.
  2862. SeeAlso: INT 15/AX=7002h,INT E1"DeskMate"
  2863. --------O-E0---------------------------------
  2864. INT E0 - CP/M-86, Concurrent CP/M, DR Multiuser DOS - FUNCTION CALLS
  2865.     CL = function number (see #3145,#3146)
  2866.     DS,DX = parameters
  2867. Return: as appropriate for function
  2868.     CX is often the error code (see #3147)
  2869. Notes:    several functions are covered in more detail in following entries
  2870.     most of these calls are also supported by Digital Research's DOS Plus
  2871.       v2.1; the unsupported functions are 26h,29h-2Bh,3Ah,3Dh-62h,71h-8Ch,
  2872.       90h-92h,94h-97h,9Bh-ABh, and AEh-FFh
  2873. SeeAlso: INT 21/AX=4459h,INT 21/AH=E0h"DOS Plus"
  2874.  
  2875. (Table 3145)
  2876. Values for CP/M-86,DR Multiuser DOS function number:
  2877.  00h    terminate calling process (see also INT 21/AH=00h)
  2878.  01h    read a character
  2879.  02h    write character to default console (see also INT 21/AH=02h)
  2880.  03h    read character from default AUX (see also INT 21/AH=03h)
  2881.  04h    write character to default AUX (see also INT 21/AH=04h)
  2882.  05h    write character to default list device (see also INT 21/AH=05h)
  2883.  06h    perform raw I/O on default console (see also INT 21/AH=06h)
  2884.  07h    return default AUX input status
  2885.  08h    return default AUX output status
  2886.  09h    write string to default console (see also INT 21/AH=09h)
  2887.  0Ah    read string from default console (see also INT 21/AH=0Ah)
  2888.  0Bh    return default console input status (see also INT 21/AH=0Bh)
  2889.  0Ch    get BDOS release ID
  2890.  0Dh    reset all disk drives (see also INT 21/AH=0Dh)
  2891.  0Eh    set default drive (see also INT 21/AH=0Eh)
  2892.  0Fh    open file via FCB (see also INT 21/AH=0Fh,#0648)
  2893.  10h    close file via FCB (see also INT 21/AH=10h)
  2894.  11h    search for first matching file with FCB (see also INT 21/AH=11h)
  2895.  12h    search for next matching file with FCB (see also INT 21/AH=12h)
  2896.  13h    delete file via FCB (see also INT 21/AH=13h)
  2897.  14h    sequential read via FCB (see also INT 21/AH=14h)
  2898.  15h    sequential write via FCB (see also INT 21/AH=15h)
  2899.  16h    create file via FCB (see also INT 21/AH=16h)
  2900.  17h    rename file via FCB (see also INT 21/AH=17h)
  2901.  18h    get bit map of logged drives
  2902.  19h    get default drive (see also INT 21/AH=19h)
  2903.  1Ah    set DMA address offset
  2904.  1Bh    get default disk allocation vector (see also INT 21/AH=1Bh)
  2905.  1Ch    set default drive to read-only
  2906.  1Dh    get bit map of read-only drives
  2907.  1Eh    set file attributes via FCB (see also INT 21/AX=4301h)
  2908.  1Fh    get address of disk parameter block (see also INT 21/AH=1Fh)
  2909.  20h    get/set default user number
  2910.  21h    read random record via FCB (see also INT 21/AH=21h)
  2911.  22h    write random record via FCB (see also INT 21/AH=22h)
  2912.  23h    compute file size with FCB (see also INT 21/AH=23h)
  2913.  24h    get FCB random record number (see also INT 21/AH=24h)
  2914.  25h    reset specified drives
  2915.  26h    access specified drives (not in DR DOS Plus v2.1)
  2916.  27h    free specified drives
  2917.  28h    write random with FCB, zero fill (see also also INT 21/AH=28h)
  2918.  2Ah    lock records in FCB file (see also INT 21/AH=5Ch)
  2919.  2Bh    unlock records in FCB file (see also INT 21/AH=5Ch)
  2920.  2Ch    set BDOS multisector count
  2921.  2Dh    set BDOS error mode
  2922.  2Eh    get free space on disk
  2923.  2Fh    load, initialize, and jump to process (see also INT 21/AH=4Bh)
  2924.  30h    flush write-deferred buffers
  2925.  31h    get/set system variable (DOS Plus v2.1)
  2926.  32h    call BIOS (XIOS) character routine (see #3146)
  2927.  33h    set DMA address segment
  2928.  34h    get DMA buffer address
  2929.  35h    CP/M-86 allocate maximum memory
  2930.  36h    allocate maximum memory at specified segment
  2931.  37h    CP/M-86 allocate memory segment (see also INT 21/AH=48h)
  2932.  38h    allocate memory at specified segment
  2933.  39h    CP/M-86 free specified memory segment (see also INT 21/AH=49h)
  2934.  3Ah    CP/M-86 free all memory (not in DOS Plus v2.1)
  2935.  3Bh    load .CMD file into memory
  2936.  3Ch    (DOS Plus v2.1) call RSX program
  2937.  40h    (DR-NET) log on a server
  2938.  41h    (DR-NET) log off a server
  2939.  42h    (DR-NET) send a message
  2940.  43h    (DR-NET) receive a message
  2941.  44h    (DR-NET) get network status
  2942.  45h    (DR-NET) get requestor configuration table
  2943.  46h    (DR-NET) set compatibility attributes
  2944.  47h    (DR-NET) get server configuration table
  2945.  48h    (DR-NET) set network error mode
  2946.  49h    (DR-NET) attach network
  2947.  4Ah    (DR-NET) detach network
  2948.  4Bh    (DR-NET) set default password
  2949.  4Ch    (DR-NET) get-set long timeout
  2950.  4Dh    (DR-NET) get parameter table
  2951.  50h    (DR-NET) get network information
  2952.  53h    get current time (see also INT 21/AH=2Ch)
  2953.  54h    set current time (see also INT 21/AH=2Dh)
  2954.  55h    get binary system date (see also INT 21/AH=2Ah)
  2955.  56h    set system date (see also INT 21/AH=2Bh)
  2956.  57h    allocate system flag
  2957.  58h    deallocate system flag
  2958.  59h    reserve memory in global area
  2959.  5Ah    lock physical drive
  2960.  5Bh    unlock physical drive
  2961.  5Ch    search path for executable file
  2962.  5Dh    load and execute command (see also INT 21/AH=4Bh)
  2963.  5Eh    get/set process exit code
  2964.  5Fh    set country information
  2965.  60h    get country information
  2966.  63h    truncate FCB file (see also INT 21/AH=28h)
  2967.  64h    create/update directory label
  2968.  65h    get directory label
  2969.  66h    get FCB date stamp and password mode
  2970.  67h    write extended FCB
  2971.  68h    set system date and time
  2972.  69h    get system date and time in binary
  2973.  6Ah    establish password for file access
  2974.  6Bh    get OS serial number
  2975.  6Ch    (DOS Plus v2.1) get/set program return code
  2976.  6Dh    get/set console mode
  2977.  6Eh    get/set string delimiter
  2978.  6Fh    write block to default console
  2979.  70h    write block to default list device
  2980.  71h    execute DOS-compatible function
  2981.  74h    set FCB time and date stamps
  2982.  80h    allocate memory
  2983.  82h    deallocate memory
  2984.  83h    poll I/O device
  2985.  84h    wait on system flag
  2986.  85h    set system flag
  2987.  86h    create message queue
  2988.  87h    open message queue
  2989.  88h    delete message queue
  2990.  89h    read from message queue
  2991.  8Ah    conditionally read from message queue
  2992.  8Bh    write to message queue
  2993.  8Ch    conditionally write to message queue
  2994.  8Dh    delay calling process
  2995.  8Eh    call process dispatcher (yield CPU)
  2996.  8Fh    terminate calling process (same as function 00h)
  2997.  90h    create a process
  2998.  91h    set calling process' priority
  2999.  92h    attach to default console
  3000.  93h    detach from default console
  3001.  95h    assign default console to process
  3002.  96h    interpret and execute commandline
  3003.  97h    resident procedure library
  3004.  98h    parse ASCII string into FCB (see also INT 21/AH=29h)
  3005.  99h    return default console
  3006.  9Ah    get address of system data (SYSDAT)
  3007.  9Bh    get system time and date
  3008.  9Ch    return calling process' descriptor
  3009.  9Dh    terminate process by name or PD address
  3010.  9Eh    attach to default list device
  3011.  9Fh    detach from default list device
  3012.  A0h    select default list device
  3013.  A1h    conditionally attach to default list device
  3014.  A2h    conditionally attach to default console
  3015.  A3h    get OS version number
  3016.  A4h    get default list device
  3017.  A5h    attach to default AUX
  3018.  A6h    detach from default AUX
  3019.  A7h    conditionally attach to default AUX
  3020.  A8h    set default AUX
  3021.  A9h    return default AUX
  3022.  ACh    read block from default AUX
  3023.  ADh    (DOS Plus v2.1) write block to default AUX
  3024.  B0h    configure default AUX
  3025.  B1h    get/set device control parameters
  3026.  B2h    send Break through default AUX
  3027.  B3h    allocate physical memory
  3028.  B4h    free physical memory
  3029.  B5h    map physical memory
  3030.  B6h    nondestructive message queue read
  3031.  B7h    timed wait on system flag
  3032.  B8h    get/set I/O port mapping
  3033.  B9h    set list device timeout
  3034.  BAh    set AUX timeout value
  3035.  BBh    execute XIOS service
  3036.  BDh    (DR Multiuser DOS) delay
  3037.  FFh    return 80386 to native mode
  3038.  
  3039. (Table 3146)
  3040. Values for DOS Plus v2.1 XIOS functions:
  3041.  00h    terminate program
  3042.  01h    ???
  3043.  02h    check for console input status
  3044.  03h    read character from console
  3045.  04h    write character to console
  3046.  05h    write character to list device
  3047.  06h    write character to auxiliary device
  3048.  07h    read character from auxiliary device
  3049.  0Fh    get list device status
  3050.  10h-14h reserved
  3051.  15h    device initialization
  3052.  16h    check console output status
  3053.  17h-7Fh reserved
  3054. ---BBC Acorn---
  3055.  80h    get XIOS version
  3056.  81h    get Tube semaphore
  3057.  82h    release Tube semaphore
  3058.  83h    select text/graphics
  3059.  84h    update B&W graphics rectangle
  3060.  85h    update color graphics rectangle
  3061.  86h    get/release/update mouse
  3062.  87h    get system error info
  3063.  88h    entry in CLOCK called by WatchDog RSP
  3064.  89h    BBC OSBYTE function
  3065.  8Ah    BBC OSWORD function
  3066.  
  3067. (Table 3147)
  3068. Values for DR Multiuser DOS Error Return Code:
  3069.  00h    no error
  3070.  01h    system call not implemented
  3071.  02h    illegal system call number
  3072.  03h    cannot find memory
  3073.  04h    illegal flag number
  3074.  05h    flag overrun
  3075.  06h    flag underrun
  3076.  07h    no unused Queue Descriptors
  3077.  08h    no free queue buffer
  3078.  09h    cannot find queue
  3079.  0Ah    queue in use
  3080.  0Ch    no free Process Descriptors
  3081.  0Dh    no queue access
  3082.  0Eh    empty queue
  3083.  0Fh    full queue
  3084.  10h    CLI queue missing
  3085.  11h    no 8087 in system
  3086.  12h    no unused Memory Descriptors
  3087.  13h    illegal console number
  3088.  14h    no Process Descriptor match
  3089.  15h    no console match
  3090.  16h    no CLI process
  3091.  17h    illegal disk number
  3092.  18h    illegal filename
  3093.  19h    illegal filetype
  3094.  1Ah    character not ready
  3095.  1Bh    illegal Memory Descriptor
  3096.  1Ch    bad return from BDOS load
  3097.  1Dh    bad return from BDOS read
  3098.  1Eh    bad return from BDOS open
  3099.  1Fh    null command
  3100.  20h    not owner of resource
  3101.  21h    no CSEG in load file
  3102.  22h    process Descriptor exists on Thread Root
  3103.  23h    could not terminate process
  3104.  24h    cannot attach to process
  3105.  25h    illegal list device number
  3106.  26h    illegal password
  3107.  28h    external termination occurred
  3108.  29h    fixup error upon load
  3109.  2Ah    flag set ignored
  3110.  2Bh    illegal auxilliary device number
  3111. --------O-E0----CL03-------------------------
  3112. INT E0 - DR Multiuser DOS - "A_READ" - READ CHARACTER FROM AUX DEVICE
  3113.     CL = 03h
  3114. Return: AL = ASCII character
  3115. Notes:    A_READ reads the next 8-bit character from the logical auxilliary
  3116.       input device (AUXn:); control is not returned to the calling
  3117.       process until a character has been read.
  3118.     if another process owns AUX, this call blocks until the device becomes
  3119.       available
  3120. SeeAlso: INT 21/AH=03h,INT E0/CL=04h,INT E0/CL=07h,INT E0/CL=A5h,INT E0/CL=ACh
  3121. --------O-E0----CL04-------------------------
  3122. INT E0 - DR Multiuser DOS - "A_WRITE" - WRITE CHARACTER TO AUX DEVICE
  3123.     CL = 04h
  3124.     DL = ASCII character
  3125. Return: nothing
  3126. Note:    if another process owns AUX, this call blocks until the device becomes
  3127.       available
  3128. SeeAlso: INT 21/AH=04h,INT E0/CL=03h,INT E0/CL=08h,INT E0/CL=A5h,INT E0/CL=ADh
  3129. --------O-E0----CL07-------------------------
  3130. INT E0 - DR Multiuser DOS - "A_STATIN" - GET INPUT STATUS OF AUX DEVICE
  3131.     CL = 07h
  3132. Return: AL = status
  3133.         00h not ready
  3134.         FFh character available
  3135. Desc:    determine whether the current AUX device has input available
  3136. SeeAlso: INT E0/CL=03h,INT E0/CL=08h
  3137. --------O-E0----CL08-------------------------
  3138. INT E0 - DR Multiuser DOS - "A_STATOUT" - GET OUTPUT STATUS OF AUX DEVICE
  3139.     CL = 08h
  3140. Return: AL = status
  3141.         00h not ready
  3142.         FFh ready for output
  3143. Desc:    determine whether the current AUX device is able to accept more output
  3144. SeeAlso: INT E0/CL=04h,INT E0/CL=07h
  3145. --------O-E0----CL59-------------------------
  3146. INT E0 - ConcCP/M,DR Multiuser DOS - "S_MEMORY" - RESERVE MEMORY IN GLOBAL AREA
  3147.     CL = 59h
  3148.     DX = size in bytes
  3149. Return: AX = status
  3150.         FFFFh failed
  3151.         other successful
  3152.         ES:BX -> reserved memory
  3153. --------O-E0----CL86-------------------------
  3154. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_MAKE" - CREATE MESSAGE QUEUE
  3155.     CL = 86h
  3156.     DS:DX -> queue descriptor (see #3148)
  3157. Return: AX = status (0000h success, FFFFh failure)
  3158.     CX = error code (see #3147)
  3159. SeeAlso: INT E0/CL=87h
  3160.  
  3161. Format of DR Multiuser DOS queue descriptor:
  3162. Offset    Size    Description    (Table 3148)
  3163.  00h  2 WORDs    internal use, initialize to zeros
  3164.  04h    WORD    flags
  3165.  06h  8 BYTEs    queue name
  3166.  0Eh    WORD    length of message
  3167.  10h    WORD    number of messages
  3168.  12h  4 WORDs    internal use, initialize to zeros
  3169.  1Ah    WORD    offset in system area of buffer for messages
  3170. --------O-E0----CL87-------------------------
  3171. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_OPEN" - OPEN MESSAGE QUEUE
  3172.     CL = 87h
  3173.     DS:DX -> queue parameter block (see #3149)
  3174. Return: AX = status (0000h success, FFFFh failure)
  3175.     CX = error code (see #3147)
  3176. SeeAlso: INT E0/CL=86h,INT E0/CL=89h
  3177.  
  3178. Format of DR Multiuser DOS queue parameter block:
  3179. Offset    Size    Description    (Table 3149)
  3180.  00h    WORD    internal use, initialize to zero
  3181.  02h    WORD    queue ID (set by INT E0/CL=87h)
  3182.  04h    WORD    internal use, initialize to zero
  3183.  06h    WORD    offset of queue message buffer
  3184.  08h  8 BYTEs    queue name
  3185. --------O-E0----CL89-------------------------
  3186. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_READ" - READ MESSAGE QUEUE
  3187.     CL = 89h
  3188.     DS:DX -> queue parameter block (see #3149)
  3189. Return: AX = status (0000h success, FFFFh failure)
  3190.     CX = error code (see #3147)
  3191. SeeAlso: INT E0/CL=87h,INT E0/CL=8Ah,INT E0/CL=8Bh
  3192. --------O-E0----CL8A-------------------------
  3193. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CREAD" - CONDITIONALLY READ MSG QUEUE
  3194.     CL = 8Ah
  3195.     DS:DX -> queue parameter block (see #3149)
  3196. Return: AX = status (0000h success, FFFFh failure)
  3197.     CX = error code (see #3147)
  3198. SeeAlso: INT E0/CL=87h,INT E0/CL=89h,INT E0/CL=8Ch
  3199. --------O-E0----CL8B-------------------------
  3200. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_WRITE" - WRITE MESSAGE QUEUE
  3201.     CL = 8Bh
  3202.     DS:DX -> queue parameter block (see #3149)
  3203. Return: AX = status (0000h success, FFFFh failure)
  3204.     CX = error code (see #3147)
  3205. SeeAlso: INT E0/CL=89h,INT E0/CL=8Ch
  3206. --------O-E0----CL8C-------------------------
  3207. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CWRITE" - CONDITIONALLY WRITE MSG QUEUE
  3208.     CL = 8Ch
  3209.     DS:DX -> queue parameter block (see #3149)
  3210. Return: AX = status (0000h success, FFFFh failure)
  3211.     CX = error code (see #3147)
  3212. SeeAlso: INT E0/CL=8Ah,INT E0/CL=8Bh
  3213. --------O-E0----CL8E-------------------------
  3214. INT E0 - ConcCP/M,DR Multiuser DOS - "P_DISPATCH" - CALL DISPATCHER
  3215.     CL = 8Eh
  3216.     DX = FFFFh (optional) to force dispatch
  3217. Return: nothing
  3218. Desc:    allow other processes of the same or higher priority to run if they
  3219.       are ready
  3220. Note:    if DX=FFFFh, a dispatch is forced even if no other process is ready
  3221. SeeAlso: INT E0/CL=91h
  3222. --------O-E0----CL91-------------------------
  3223. INT E0 - ConcCP/M,DR Multiuser DOS - "P_PRIORITY" - SET PROCESS PRIORITY
  3224.     CL = 91h
  3225.     DL = new priority (00h highest to FFh lowest)
  3226. Note:    sets priority of calling process; transient processes are initialized
  3227.       to priority C8h
  3228. SeeAlso: INT E0/CL=8Eh
  3229. --------O-E0----CL93-------------------------
  3230. INT E0 - ConcCP/M,DR Multiuser DOS - "C_DETACH" - DETACH FROM DEFAULT CONSOLE
  3231.     CL = 93h
  3232. Return: AX = status
  3233.         0000h successfully detached
  3234.         FFFFh detach failed
  3235. SeeAlso: INT E0/CL=A6h
  3236. --------O-E0----CLA5-------------------------
  3237. INT E0 - DR Multiuser DOS - "A_ATTACH" - ATTACH AUX DEVICE
  3238.     CL = A5h
  3239. Return: nothing
  3240. Desc:    attaches the default auxiliary device to the calling process unless
  3241.       it is already attached to another process, in which case the call
  3242.       blocks until the device becomes available
  3243. Note:    this call should be used before attempting to read or write from
  3244.       the AUX device; however, the I/O calls internally call this function
  3245.       to ensure device ownership
  3246. SeeAlso: INT E0/CL=03h,INT E0/CL=04h,INT E0/CL=A6h,INT E0/CL=A7h,INT E0/CL=A8h
  3247. SeeAlso: INT E0/CL=ACh,INT E0/CL=ADh,INT E0/CL=B0h
  3248. --------O-E0----CLA6-------------------------
  3249. INT E0 - DR Multiuser DOS - "A_DETACH" - DETACH FROM AUX DEVICE
  3250.     CL = A6h
  3251. Return: AX = status
  3252.         0000h successfully detached
  3253.         FFFFh detach failed
  3254.     CX = error code
  3255. SeeAlso: INT E0/CL=93h,INT E0/CL=A5h,INT E0/CL=A7h
  3256. --------O-E0----CLA7-------------------------
  3257. INT E0 - DR Multiuser DOS - "A_CATTACH" - CONDITIONALLY ATTACH TO AUX DEVICE
  3258.     CL = A7h
  3259. Return: AX = status
  3260.         0000h attached
  3261.         FFFFh unable to attach
  3262. Desc:    attaches the default auxiliary device to the calling process if it is
  3263.       available
  3264. Note:    does not block if the device is already in use
  3265. SeeAlso: INT E0/CL=A5h,INT E0/CL=A6h,INT E0/CL=A8h,INT E0/CL=B0h
  3266. --------O-E0----CLA8-------------------------
  3267. INT E0 - DR Multiuser DOS - "A_SET" - SET DEFAULT AUX DEVICE NUMBER
  3268.     CL = A8h
  3269.     DL = auxiliary device number
  3270. Return: AX = status
  3271.         0000h successful
  3272.         FFFFh failed
  3273.     CX = error code
  3274. Desc:    specify which physical device will become AUX
  3275. SeeAlso: INT E0/CL=A5h,INT E0/CL=A9h
  3276. --------O-E0----CLA9-------------------------
  3277. INT E0 - DR Multiuser DOS - "A_GET" - GET DEFAULT AUX DEVICE NUMBER
  3278.     CL = A9h
  3279. Return: AL = current default auxiliary device number
  3280. Desc:    determine which physical device is currently AUX
  3281. SeeAlso: INT E0/CL=A8h
  3282. --------O-E0----CLAC-------------------------
  3283. INT E0 - DR Multiuser DOS - "A_READBLK" - READ STRING FROM AUX DEVICE
  3284.     CL = ACh
  3285.     DS:DX -> character control block (CHCB) (see #3150)
  3286. Return: AX = number of characters read
  3287. Desc:    read characters from the default auxiliary (AUXn:) device into a buffer
  3288.       until the buffer is full or the device is no longer ready
  3289. Notes:    if the device is initially not ready, blocks until at least one
  3290.       character has been read
  3291.     if another process owns AUX, this call blocks until the device becomes
  3292.       available
  3293. SeeAlso: INT E0/CL=03h,INT E0/CL=A5h,INT E0/CL=ADh
  3294.  
  3295. Format of DR Multiuser DOS character control block (CHCB):
  3296. Offset    Size    Description    (Table 3150)
  3297.  00h    DWORD    pointer to character buffer
  3298.  04h    WORD    length of character buffer
  3299. --------O-E0----CLAD-------------------------
  3300. INT E0 - DR Multiuser DOS - "A_WRITEBLK" - WRITE STRING TO AUX DEVICE
  3301.     CL = ADh
  3302.     DS:DX -> character control block (see #3150)
  3303. Return: AX = number of characters written
  3304. Note:    does not return until at least one character has been written
  3305. SeeAlso: INT E0/CL=04h,INT E0/CL=A5h,INT E0/CL=ACh
  3306. --------O-E0----CLB0-------------------------
  3307. INT E0 - DR Multiuser DOS - "A_CONFIG" - GET/SET AUX DEVICE PARAMETERS
  3308.     CL = B0h
  3309.     DX:DX -> AUX device parameter block (see #3151)
  3310. Return: AX = status
  3311.         0000h successful
  3312.         parameter block updated
  3313.         FFFFh failed
  3314.         CX = error code
  3315. SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
  3316.  
  3317. Format of DR Multiuser DOS AUX device parameter block:
  3318. Offset    Size    Description    (Table 3151)
  3319.  00h    BYTE    function (00h get, 01h set)
  3320.  01h    BYTE    baud rate (see #3153) FFh = don't change/unknown
  3321.  02h    BYTE    parity (see #3152)
  3322.  03h    BYTE    stop bits (00h one, 01h 1.5, 02h two, FFh unknown/don't change)
  3323.  04h    BYTE    data bits (05h-08h or FFh unknown/don't change)
  3324.  05h    BYTE    handshake (00h none, 01h DTS/DSR, 02h RTS/CTS, 04h XON/XOFF,
  3325.         FFh unknown/don't change)
  3326.  06h    BYTE    XON character, FFh unknown/don't change
  3327.  07h    BYTE    XOFF character, FFh unknown/don't change
  3328.  
  3329. (Table 3152)
  3330. Values for DR Multiuser DOS AUX parity:
  3331.  00h    none
  3332.  01h    odd
  3333.  02h    none
  3334.  03h    even
  3335.  04h    stick parity bit
  3336.  FFh    don't change/unknown
  3337.  
  3338. (Table 3153)
  3339. Values for DR Multiuser DOS AUX baud rate:
  3340.  00h    50 baud
  3341.  01h    62.5 baud
  3342.  02h    75 baud
  3343.  03h    110 baud
  3344.  04h    134.5 baud
  3345.  05h    150 baud
  3346.  06h    200 baud
  3347.  07h    300 baud
  3348.  08h    600 baud
  3349.  09h    1200 baud
  3350.  0Ah    1800 baud
  3351.  0Bh    2000 baud
  3352.  0Ch    2400 baud
  3353.  0Dh    3600 baud
  3354.  0Eh    4800 baud
  3355.  0Fh    7200 baud
  3356.  10h    9600 baud
  3357.  11h    19200 baud
  3358.  12h    38400 baud
  3359.  13h    56000 baud
  3360.  14h    76800 baud
  3361.  15h    115200 baud
  3362. --------O-E0----CLB1-------------------------
  3363. INT E0 - DR Multiuser DOS - "A_CONTROL" - GET/SET AUX CONTROL PARAMETERS
  3364.     CL = B1h
  3365.     DS:DX -> AUX device control block (see #3154)
  3366. Return: AX = status
  3367.         0000h successful
  3368.         control block updated
  3369.         FFFFh failed
  3370.         CX = error code
  3371. SeeAlso: INT E0/CL=B0h,INT E0/CL=B2h
  3372.  
  3373. Format of DR Multiuser DOS AUX device control block:
  3374. Offset    Size    Description    (Table 3154)
  3375.  00h    BYTE    function (00h get, 01h set)
  3376.  01h    BYTE    DTR state (00h low, 01h high, FFh unknown/don't change)
  3377.  02h    BYTE    RTS state (00h low, 01h high, FFh unknown/don't change)
  3378.  03h    BYTE    DSR state (00h low, 01h high, FFh unknown/don't change)
  3379.  04h    BYTE    CTS state (00h low, 01h high, FFh unknown/don't change)
  3380.  05h    BYTE    DCD state (00h low, 01h high, FFh unknown/don't change)
  3381.  06h    BYTE    RI state (00h inactive, 01h active, FFh unknown/don't change)
  3382. --------O-E0----CLB2-------------------------
  3383. INT E0 - DR Multiuser DOS - "A_BREAK" - SEND BREAK TO AUX DEVICE
  3384.     CL = B2h
  3385.     DX = duration of break in system ticks (0001h-FFFFh)
  3386. Return: AX = status
  3387.         0000h successful
  3388.         break signal completed
  3389.         FFFFh failed
  3390.         CX = error code
  3391. Note:    if the AUX device is currently owned by another process, this call will
  3392.       block until the device becomes available
  3393. SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
  3394. --------O-E0----CLBD-------------------------
  3395. INT E0 - DR Multiuser DOS - "P_DELAY" - DELAY EXECUTION
  3396.     CL = BDh
  3397.     DX = delay in system ticks
  3398. Return: after the delay elapses
  3399. Notes:    the length of a system tick is installation-dependent (typically
  3400.       1/50 or 1/60 second); the length may be determined by reading the
  3401.       TICKSPERSEC value from the system data segment
  3402.     the actual delay before the process is rescheduled to run may be up to
  3403.       one tick longer than requested; the delay between rescheduling and
  3404.       actual execution cannot be predicted if higher-priority processes
  3405.       are awaiting a turn at the CPU
  3406. SeeAlso: INT 15/AH=86h,INT 1A/AX=FF01h,INT 2F/AX=1224h,INT 62/AX=0096h
  3407. --------g-E00000-----------------------------
  3408. INT E0 - PCROBOTS v1.41 - "SWAPTASK" - END CURRENT ROBOT'S TURN
  3409.     AX = 0000h
  3410. Return: nothing
  3411. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  3412.       which specially-written .COM or .EXE programs form robots battling
  3413.       each other in a user-defined arena
  3414. --------g-E00001-----------------------------
  3415. INT E0 - PCROBOTS v1.41 - "MOVEMENT" - START MOVING
  3416.     AX = 0001h
  3417.     BX = speed (0-maximum for robot)
  3418.     CX = direction (0-359 degrees)
  3419. Return: nothing
  3420. Notes:    the speed will change to the specified value at the maximum
  3421.       acceleration the robot is capable of; if the robot is already moving
  3422.       faster than its maximum maneuverability speed, it will not be able
  3423.       to change direction
  3424.     this call also terminates the current robot's turn
  3425. SeeAlso: AX=0000h,AX=0002h,AX=0003h
  3426. --------g-E00002-----------------------------
  3427. INT E0 - PCROBOTS v1.41 - "SCAN" - SCAN FOR OTHER ROBOTS IN THE GIVEN DIRECTION
  3428.     AX = 0002h
  3429.     BX = direction (0-359 degrees)
  3430.     CX = resolution (0-45 degrees)
  3431. Return: AX = status
  3432.         FFFFh if nothing detected
  3433.         else robot ID (0-19)
  3434.         BX = range to detected robot
  3435. Notes:    the scan searches within CX degrees to either side of the specified
  3436.       direction
  3437.     the scanner will see right through walls, but shells will not pass
  3438.       through walls
  3439.     this call also terminates the current robot's turn
  3440. SeeAlso: AX=0000h,AX=0001h,AX=0003h
  3441. --------g-E00003-----------------------------
  3442. INT E0 - PCROBOTS v1.41 - "SHOOT" - FIRE A SHELL AT ANOTHER ROBOT
  3443.     AX = 0003h
  3444.     BX = direction (0-359 degrees)
  3445.     CX = range (0-700)
  3446. Return: AX = status (0000h not fired, else ID of shell fired)
  3447. Notes:    up to seven shells may be in flight for a robot at one time; the cannon
  3448.       takes 50 ticks to reload
  3449.     this call also terminates the current robot's turn
  3450. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=002Ch
  3451. --------g-E00010-----------------------------
  3452. INT E0 - PCROBOTS v1.41 - "GETXY" - GET ROBOT'S CURRENT POSITION
  3453.     AX = 0010h
  3454. Return: BX = current X coordinate (0-999)
  3455.     CX = current Y coordinate (0-999)
  3456. --------g-E00011-----------------------------
  3457. INT E0 - PCROBOTS v1.41 - "TRANSMIT" - SEND DATA TO ANOTHER ROBOT
  3458.     AX = 0011h
  3459.     BX = target robot ID
  3460.     CX = data to be sent
  3461. Return: AX = status (0000h data could not be sent, 0001h data sent)
  3462. Note:    this call costs one unit of battery power
  3463. --------g-E00012-----------------------------
  3464. INT E0 - PCROBOTS v1.41 - "RECEIVE" - GET DATA FROM OTHER ROBOTS
  3465.     AX = 0012h
  3466. Return: AX = status
  3467.         0000h no data available
  3468.         0001h data retrieved
  3469.         BX = sender's ID
  3470.         CX = data
  3471. Note:    each robot has a 20-word receive FIFO; if the FIFO is full, other
  3472.       robots will be unable to send more data until some is read
  3473. --------g-E00013-----------------------------
  3474. INT E0 - PCROBOTS v1.41 - "DAMAGE" - DETERMINE HOW MUCH DAMAGE SUSTAINED
  3475.     AX = 0013h
  3476. Return: BX = damage status
  3477. Note:    the initial value depends on configuration, but is typically 100; as
  3478.       the robot is damaged, it decreases
  3479. --------g-E00014-----------------------------
  3480. INT E0 - PCROBOTS v1.41 - "SPEED" - DETERMINE HOW FAST ROBOT IS MOVING
  3481.     AX = 0014h
  3482. Return: BX = current speed
  3483. --------g-E00015-----------------------------
  3484. INT E0 - PCROBOTS v1.41 - "BATTERY" - DETERMINE HOW MUCH BATTERY POWER LEFT
  3485.     AX = 0015h
  3486. Return: BX = current battery charge
  3487. Note:    the battery starts off with 1000 units of charge, and is constantly
  3488.       being charged by solar panels and constantly discharged by motion;
  3489.       the battery is charged at 4 units per turn and discharged at
  3490.       0.1*speed units per turn.
  3491. --------g-E00016-----------------------------
  3492. INT E0 - PCROBOTS v1.41 - "TICKS" - DETERMINE HOW LONG SINCE GAME STARTED
  3493.     AX = 0016h
  3494. Return: BX:CX = number of game ticks elapsed (not related to real time)
  3495. --------g-E00017-----------------------------
  3496. INT E0 - PCROBOTS v1.41 - "L_SIN" - GET SCALED SINE OF AN ANGLE
  3497.     AX = 0017h
  3498.     BX = angle (0-359 degrees)
  3499. Return: BX:CX = 100000*sine of angle
  3500. SeeAlso: AX=0018h,AX=0019h,AX=001Ah,AX=001Bh
  3501. --------g-E00018-----------------------------
  3502. INT E0 - PCROBOTS v1.41 - "L_COS" - GET SCALED COSINE OF AN ANGLE
  3503.     AX = 0018h
  3504.     BX = angle (0-359 degrees)
  3505. Return: BX:CX = 100000*cosine of angle
  3506. SeeAlso: AX=0017h,AX=0019h,AX=001Ah
  3507. --------g-E00019-----------------------------
  3508. INT E0 - PCROBOTS v1.41 - "L_TAN" - GET SCALED TANGENT OF AN ANGLE
  3509.     AX = 0019h
  3510.     BX = angle (0-359 degrees)
  3511. Return: BX:CX = 100000*tangent of angle
  3512. SeeAlso: AX=0017h,AX=0018h,AX=001Ah
  3513. --------g-E0001A-----------------------------
  3514. INT E0 - PCROBOTS v1.41 - "L_ATAN" - GET ANGLE GIVEN SCALED TANGENT
  3515.     AX = 001Ah
  3516.     BX:CX = 100000*tangent of an angle
  3517. Return: AX = angle (-90 to +90 degrees)
  3518. SeeAlso: AX=0017h,AX=0018h,AX=0019h
  3519. --------g-E0001B-----------------------------
  3520. INT E0 - PCROBOTS v1.41 - "SQRT" - DETERMINE SQUARE ROOT OF A NUMBER
  3521.     AX = 001Bh
  3522.     BX:CX = value
  3523. Return: BX:CX = square root
  3524. SeeAlso: AX=0017h
  3525. --------g-E0001C-----------------------------
  3526. INT E0 - PCROBOTS v1.41 - "SET_PATTERN" - SPECIFY ROBOT'S DISPLAY IMAGE
  3527.     AX = 001Ch
  3528.     BX:CX -> pattern array
  3529. Return: nothing
  3530. Note:    the pattern array consists of five bytes, the low five bits of each
  3531.       specifying the bit pattern for one line of the robot's screen display
  3532. --------g-E0001D-----------------------------
  3533. INT E0 - PCROBOTS v1.41 - "DEBUG_FLAG" - SET/CLEAR MARKERS NEXT TO ROBOT'S NAME
  3534.     AX = 001Dh
  3535.     BX = flag number (0 or 1)
  3536.     CX = new value (0 reset, 1 set)
  3537. Return: nothing
  3538. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  3539.       which specially-written .COM or .EXE programs form robots battling
  3540.       each other in a user-defined arena
  3541. Note:    the two flag markers may be used for any purpose, typically for
  3542.       debugging to provide a visual display of progress
  3543. --------g-E0001E-----------------------------
  3544. INT E0 - PCROBOTS v1.41 - "BUY_ARMOUR" - BUY OR SELL ARMOR FOR ROBOT
  3545.     AX = 001Eh
  3546.     BX = number of armor units to buy (negative to sell)
  3547. Return: nothing
  3548. Note:    each armor unit is worth 50 battery units; the robot's armor rating
  3549.       will not go above its initial rating, so attempts to purchase more
  3550.       will waste battery units
  3551. SeeAlso: AX=001Fh
  3552. --------g-E0001F-----------------------------
  3553. INT E0 - PCROBOTS v1.41 - "BUY_SHELLS" - BUY ADDITIONAL CANNON SHELLS
  3554.     AX = 001Fh
  3555.     BX = number of shells to buy
  3556. Return: nothing
  3557. Note:    each shell costs ten battery units
  3558. SeeAlso: AX=001Eh,AX=0020h
  3559. --------g-E00020-----------------------------
  3560. INT E0 - PCROBOTS v1.41 - "SHELLS LEFT" - DETERMINE HOW MANY SHELLS ROBOT HAS
  3561.     AX = 0020h
  3562. Return: BX = number of shells remaining
  3563. SeeAlso: AX=001Fh
  3564. --------g-E00021-----------------------------
  3565. INT E0 - PCROBOTS v1.41 - "GET LOCAL MAP"
  3566.     AX = 0021h
  3567.     BX:CX -> 81-byte buffer for map (see #3155)
  3568. Return: buffer filled with 9x9 area of map centered on robot's position
  3569.  
  3570. (Table 3155)
  3571. Values for PCROBOTS map squares:
  3572.  2Eh '.' empty square
  3573.  44h 'D' damaging trap
  3574.  52h 'R' refueling point
  3575.  58h 'X' wall
  3576. --------g-E00022-----------------------------
  3577. INT E0 - PCROBOTS v1.41 - "INVISIBILITY" - CONTROL ROBOT'S INVISIBILITY DEVICE
  3578.     AX = 0022h
  3579.     BX = new state (0000h become visible, 0001h become invisible)
  3580. Return: nothing
  3581. Notes:    this function has no effect if the robot is not capable of invisibility
  3582.     the robot can only stay invisible for 100 turns, after which it will
  3583.       automatically become visible; it must also be remain visible for
  3584.       as many turns as it was invisible before it can turn invisible
  3585.       again
  3586. SeeAlso: AX=0024h,AX=0080h
  3587. --------g-E00023-----------------------------
  3588. INT E0 - PCROBOTS v1.41 - "GET_SHELL_STATUS" - FIND OUT WHAT HAPPENED TO SHELL
  3589.     AX = 0023h
  3590. Return: BX = status of last shell to land
  3591.         0000h missed completely
  3592.         0001h hit a wall
  3593.         0002h hit a robot within 50-square radius
  3594.         0003h hit a robot within 25-square radius
  3595.         0004h hit a robot within 5-square radius
  3596. --------g-E00024-----------------------------
  3597. INT E0 - PCROBOTS v1.41 - "IS_INVISIBLE" - DETERMINE WHETHER ROBOT IS INVISIBLE
  3598.     AX = 0024h
  3599. Return: BX = visibility (0000h visible, 0001h invisible)
  3600. SeeAlso: AX=0022h,AX=0080h
  3601. --------g-E00025-----------------------------
  3602. INT E0 - PCROBOTS v1.41 - "L_ATAN2" - GET ARCTANGENT
  3603.     AX = 0025h
  3604.     BX = Y
  3605.     CX = X
  3606. Return: AX = angle (arctangent of Y/X)
  3607. --------g-E00026-----------------------------
  3608. INT E0 - PCROBOTS v1.41 - "GET_ROBOT_ID" - DETERMINE CURRENT ROBOT'S IDENTIFIER
  3609.     AX = 0026h
  3610. Return: AX = robot ID
  3611. --------g-E00027-----------------------------
  3612. INT E0 - PCROBOTS v1.41 - "REGISTER_IFF" - REGISTER FRIEND/FOE IDENT STRING
  3613.     AX = 0027h
  3614.     BX:CX = ASCIZ IFF string
  3615. Return: nothing
  3616. Note:    the IFF string may only be set once
  3617. SeeAlso: AX=0028h,AX=0029h
  3618. --------g-E00028-----------------------------
  3619. INT E0 - PCROBOTS v1.41 - "CHECK_IFF" - QUERY FRIEND/FOE IDENTIFICATION STRING
  3620.     AX = 0028h
  3621.     BX = robot ID to test
  3622. Return: AX = status
  3623.         0000h IFF strings match
  3624.         0001h IFF strings differ or invalid robot ID
  3625. SeeAlso: AX=0027h
  3626. --------g-E00029-----------------------------
  3627. INT E0 - PCROBOTS v1.41 - "REGISTER_NAME" - SPECIFY ROBOT'S NAME
  3628.     AX = 0029h
  3629.     BX:CX -> ASCIZ name string
  3630. Return: nothing
  3631. Note:    the name may only be set once
  3632. SeeAlso: AX=0027h,AX=002Ah
  3633. --------g-E0002A-----------------------------
  3634. INT E0 - PCROBOTS v1.41 - "FIND_NAME" - SEARCH FOR ROBOT WITH GIVEN NAME
  3635.     AX = 002Ah
  3636.     BX:CX -> ASCIZ name string
  3637.     DX = first ID to check
  3638. Return: AX = robot ID or FFFFh if no robot with specified name
  3639. SeeAlso: AX=0028h,AX=0029h,AX=002Bh
  3640. --------g-E0002B-----------------------------
  3641. INT E0 - PCROBOTS v1.41 - "GET_TEAM_ID" - DETERMINE TEAM MEMBERSHIP OF ROBOT
  3642.     AX = 002Bh
  3643. Return: AX = team ID (0-2) or FFFFh if 'loner'
  3644. SeeAlso: AX=0029h
  3645. --------g-E0002C-----------------------------
  3646. INT E0 - PCROBOTS v1.41 - "GET_ASHELL_STATUS" - FIND OUT WHAT HAPPENED TO SHELL
  3647.     AX = 002Ch
  3648.     BX = shell ID
  3649. Return: AX = status
  3650.         0000h missed completely
  3651.         0001h hit a wall
  3652.         0002h hit a robot within a 50-square radius
  3653.         0003h hit a robot within a 25-square radius
  3654.         0004h hit a robot within a 5-square radius
  3655.         0005h shell not known (too old or not yet fired)
  3656.         0006h shell still in flight
  3657. SeeAlso: AX=0003h
  3658. --------g-E0002D-----------------------------
  3659. INT E0 - PCROBOTS v1.41 - "REGISTER_X" - SELECT AUTOMATIC X POSITION UPDATES
  3660.     AX = 002Dh
  3661.     BX:CX -> X word variable
  3662. Return: AX = status (0001h OK, 0000h problem with address)
  3663. Note:    after this call, PCROBOTS will automatically update the specified
  3664.       word whenever the robot moves
  3665. SeeAlso: AX=002Eh
  3666. --------g-E0002E-----------------------------
  3667. INT E0 - PCROBOTS v1.41 - "REGISTER_Y" - SELECT AUTOMATIC Y POSITION UPDATES
  3668.     AX = 002Eh
  3669.     BX:CX -> Y word variable
  3670. Return: AX = status (0001h OK, 0000h problem with address)
  3671. Note:    after this call, PCROBOTS will automatically update the specified
  3672.       word whenever the robot moves
  3673. SeeAlso: AX=002Dh
  3674. --------g-E00080-----------------------------
  3675. INT E0 - PCROBOTS v1.41 - "CONFIGURE" - CUSTOMIZE ROBOT
  3676.     AX = 0080h
  3677.     BX = basic configuration (see #3156)
  3678.     CX = advanced configuration (see #3157)
  3679. Return: AX = status (0001h OK, 0000h not first call in program)
  3680. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  3681.       which specially-written .COM or .EXE programs form robots battling
  3682.       each other in a user-defined arena
  3683. Notes:    a maximum of ten points may be allocated to the robot; if you attempt
  3684.       to allocate more, some items will be given a value of zero.  If this
  3685.       function is not called, each attribute is set to the default value
  3686.       of 2.
  3687.     if the invisibility option is chosen, the robot will start with only
  3688.       900 cannon shells instead of the default 1000
  3689.  
  3690. Bitfields for PCROBOTS basic configuration:
  3691. Bit(s)    Description    (Table 3156)
  3692.  0-3    maximum speed (0-4 = 50,75,100,150,200)
  3693.  4-7    maneuverability (0-4 = 20%,35%,50%,75%,100%)
  3694.  8-11    cannon range (0-4 = 300,500,700,1000,1500)
  3695.  12-15    robot armor (0-4 = 50,75,100,150,200)
  3696.  
  3697. Bitfields for PCROBOTS advanced configuration:
  3698. Bit(s)    Description    (Table 3157)
  3699.  0-2    robot acceleration (0-4 = 5,7,10,15,20)
  3700.  3    capable of invisibility
  3701. --------r-E1---------------------------------
  3702. INT E1 - IBM ROM BASIC - used while in interpreter
  3703. Notes:    called by ROM BASIC
  3704.     BASIC.COM/BASICA.COM do not restore vector on termination
  3705. --------N-E1---------------------------------
  3706. INT E1 - PC Cluster Disk Server Information (NOT A VECTOR!)
  3707. Desc:    points at a data table
  3708. SeeAlso: INT E2
  3709. --------O-E1---------------------------------
  3710. INT E1 - MP/M-86, - ALTERNATE CP/M-86 FUNCTION CALLS
  3711.     CL = function number (see #3145,#3146 at INT E0"CP/M")
  3712.     DS,DX = parameters
  3713. Return: as appropriate for function
  3714.     CX is often the error code (see #3147 at INT E0"CP/M")
  3715. Desc:    used by some applications which alter CP/M functions while running a
  3716.       child program, to store the original INT E0 vector before
  3717.       intercepting INT E0
  3718. SeeAlso: INT E0"CP/M"
  3719. ----------E1---------------------------------
  3720. INT E1 - DeskMate (Tandy) - TASK DATA SEGMENTS (NOT A VECTOR!)
  3721. Desc:    used to store data; the    low word of the vector is the data segment for
  3722.       the first task; the high word is the data segment of the second task
  3723.       (DeskMate supports 2-way task switching between small- or
  3724.       medium-model applications)
  3725. Program: DeskMate is a proprietary GUI from Tandy distributed with several
  3726.       models of the Tandy 1000's, 2500's, 3000's, and laptops.  Retail
  3727.       and runtime versions also exist.  Some Tandy's are designed to
  3728.       boot directly into DeskMate.
  3729. SeeAlso: INT E0"DeskMate"
  3730. --------r-E2---------------------------------
  3731. INT E2 - IBM ROM BASIC - used while in interpreter
  3732. Notes:    called by ROM BASIC
  3733.     BASIC.COM/BASICA.COM do not restore vector on termination
  3734. --------N-E2---------------------------------
  3735. INT E2 - PC Cluster Program - RELOCATED INT 1C
  3736. SeeAlso: INT 1C
  3737. --------r-E3---------------------------------
  3738. INT E3 - IBM ROM BASIC - used while in interpreter
  3739. Notes:    called by ROM BASIC
  3740.     BASIC.COM/BASICA.COM do not restore vector on termination
  3741. --------r-E40005-----------------------------
  3742. INT E4 - Logitech Modula v2.0 - MonitorEntry
  3743.     AX = 0005h
  3744.     BX = priority
  3745. Return: nothing
  3746. SeeAlso: AX=0006h
  3747. --------r-E40006-----------------------------
  3748. INT E4 - Logitech Modula v2.0 - MonitorExit
  3749.     AX = 0006h
  3750. Return: nothing
  3751. SeeAlso: AX=0005h
  3752. --------r-E4---------------------------------
  3753. INT E4 - IBM ROM BASIC - used while in interpreter
  3754. Notes:    called by ROM BASIC
  3755.     BASIC.COM/BASICA.COM do not restore vector on termination
  3756. --------r-E5---------------------------------
  3757. INT E5 - IBM ROM BASIC - used while in interpreter
  3758. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  3759.     BASIC.COM/BASICA.COM do not restore vector on termination
  3760. --------r-E6---------------------------------
  3761. INT E6 - IBM ROM BASIC - used while in interpreter
  3762. Notes:    called by ROM BASIC
  3763.     BASIC.COM/BASICA.COM do not restore vector on termination
  3764. --------O-E600-------------------------------
  3765. INT E6 - Linux DOSEMU - INSTALLATION CHECK
  3766.     AH = 00h
  3767. Return: AX = AA55h if installed
  3768.         BX = DOSEMU version number * 100 (decimal)
  3769.         CX = patchlevel
  3770. SeeAlso: AH=FFh
  3771. --------O-E601-------------------------------
  3772. INT E6 - Linux DOSEMU - REGISTER DUMP
  3773.     AH = 01h
  3774. SeeAlso: AH=00h
  3775. --------O-E602-------------------------------
  3776. INT E6 - Linux DOSEMU - SET I/O PORT PERMISSIONS
  3777.     AH = 02h
  3778.     BX = base I/O port address
  3779.     CX = number of consecutive I/O ports
  3780.     CF set to allow DOS to use ports
  3781.     CF clear if DOS should not be allowed to use ports
  3782. SeeAlso: AH=00h
  3783. --------O-E605-------------------------------
  3784. INT E6 - Linux DOSEMU - STARTUP BANNER
  3785.     AH = 05h
  3786. Return: nothing
  3787. SeeAlso: AH=00h
  3788. --------O-E612-------------------------------
  3789. INT E6 - Linux DOSEMU - SET "HOGTHRESHOLD"
  3790.     AH = 12h
  3791.     BX = new "hogthreshold" (00h-99h)
  3792. Return: nothing
  3793. Desc:    specify how much CPU time DOSEMU may use
  3794. SeeAlso: AH=00h
  3795. --------O-E622-------------------------------
  3796. INT E6 - Linux DOSEMU - GET EMS STATUS
  3797.     AH = 22h
  3798. Return: ???
  3799. SeeAlso: AH=00h
  3800. --------O-E630-------------------------------
  3801. INT E6 - Linux DOSEMU - SET BOOTDISK FLAG
  3802.     AH = 30h
  3803.     BX = new flag state (0 = false, 1 = true)
  3804. Return: nothing
  3805. SeeAlso: AH=00h
  3806. --------O-E650-------------------------------
  3807. INT E6 - Linux DOSEMU - EXECUTE UNIX COMMAND
  3808.     AH = 50h
  3809.     ES:DX -> ASCIZ Unix command
  3810. SeeAlso: AH=00h,AH=51h
  3811. --------O-E651-------------------------------
  3812. INT E6 - Linux DOSEMU - EXECUTE DOS COMMAND FROM UNIX
  3813.     AH = 51h
  3814.     ES:DX -> ASCIZ DOS command
  3815. SeeAlso: AH=00h,AH=50h
  3816. --------O-E680-------------------------------
  3817. INT E6 - Linux DOSEMU - GET CURRENT UNIX DIRECTORY
  3818.     AH = 80h
  3819. Return: ES:DX -> current Unix directory
  3820.     AX = length of current directory name
  3821. SeeAlso: AH=00h,AH=81h
  3822. --------O-E681-------------------------------
  3823. INT E6 - Linux DOSEMU - CHANGE CURRENT UNIX DIRECTORY
  3824.     AH = 81h
  3825.     ES:DX -> ASCIZ directory name
  3826. SeeAlso: AH=00h,AH=80h
  3827. --------O-E6FF-------------------------------
  3828. INT E6 - Linux DOSEMU - TERMINATE
  3829.     AH = FFh
  3830. SeeAlso: AH=00h
  3831. --------r-E7---------------------------------
  3832. INT E7 - IBM ROM BASIC - used while in interpreter
  3833. Notes:    called by ROM BASIC
  3834.     BASIC.COM/BASICA.COM do not restore vector on termination
  3835. --------r-E8---------------------------------
  3836. INT E8 - IBM ROM BASIC - used while in interpreter
  3837. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  3838.     BASIC.COM/BASICA.COM do not restore vector on termination
  3839. --------r-E9---------------------------------
  3840. INT E9 - IBM ROM BASIC - used while in interpreter
  3841. Notes:    called by ROM BASIC
  3842.     BASIC.COM/BASICA.COM do not restore vector on termination
  3843. --------r-EA---------------------------------
  3844. INT EA - IBM ROM BASIC - used while in interpreter
  3845. Notes:    called by ROM BASIC
  3846.     BASIC.COM/BASICA.COM do not restore vector on termination
  3847. --------r-EB---------------------------------
  3848. INT EB - IBM ROM BASIC - used while in interpreter
  3849. Notes:    called by ROM BASIC
  3850.     BASIC.COM/BASICA.COM do not restore vector on termination
  3851. --------r-EC---------------------------------
  3852. INT EC - IBM ROM BASIC - used while in interpreter
  3853. Notes:    called by ROM BASIC
  3854.     BASIC.COM/BASICA.COM do not restore vector on termination
  3855. --------N-EC---------------------------------
  3856. INT EC - used by Alloy NTNX
  3857. --------r-EC---------------------------------
  3858. INT EC - Exact - RUNTIME INTERFACE MULTIPLEXOR
  3859.     AX = function number (0000h to 0140h)
  3860.     STACK:    DWORD address to return to
  3861.         any arguments required by function
  3862. Return: STACK:    return address popped, but otherwise unchanged
  3863. Desc:    this is the interface from applications to the runtime system by Exact
  3864.       Automatisering B.V. of the Netherlands.  By using this interrupt,
  3865.       it can provide DLL-style capabilities under MS-DOS.
  3866. Note:    the interrupt handler removes the return address and flags placed on
  3867.       the stack by the INT EC, then jumps to the appropriate function
  3868. --------r-ED---------------------------------
  3869. INT ED - IBM ROM BASIC - used while in interpreter
  3870. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  3871.     BASIC.COM/BASICA.COM do not restore vector on termination
  3872.     INT 80 through INT ED are modified but not restored by Direct Access
  3873.       v4.0, and may be left dangling by other programs written with the
  3874.       same version of compiled BASIC
  3875. SeeAlso: INT EC"BASIC",INT EE"BASIC"
  3876. --------r-EE---------------------------------
  3877. INT EE - IBM ROM BASIC - used while in interpreter
  3878. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  3879.     BASIC.COM/BASICA.COM do not restore vector on termination
  3880. SeeAlso: INT ED"BASIC",INT EE"BASIC"
  3881. --------r-EF---------------------------------
  3882. INT EF - BASIC - ORIGINAL INT 09 VECTOR
  3883. Note:    BASIC.COM/BASICA.COM do not restore vector on termination
  3884. SeeAlso: INT EE"BASIC",INT F0"BASIC"
  3885. --------O-EF----CX0473-----------------------
  3886. INT EF - GEM - INTERFACE
  3887.     CX = 0473h
  3888.     DS:DX -> GEM parameter block
  3889. --------r-F0---------------------------------
  3890. INT F0 - BASICA.COM, GWBASIC, compiled BASIC - ORIGINAL INT 08 VECTOR
  3891. Note:    BASICA.COM does not restore vector on termination
  3892. SeeAlso: INT EF"BASIC"
  3893. --------*-F1---------------------------------
  3894. INT F1 - reserved for user interrupt
  3895. --------s-F1---------------------------------
  3896. INT F1 - SPEECH.COM - CONVERT TEXT STRING TO SPEECH
  3897.     DS:BX -> '$'-terminated text string
  3898. Return: nothing
  3899. Program: SPEECH.COM is a resident text-to-speech converter by Douglas Sisco
  3900. --------s-F1---------------------------------
  3901. INT F1 - Andy C. McGuire SPEECH.COM/SAY.COM
  3902. SeeAlso: INT F2"SPEECH"
  3903. --------U-F1---------------------------------
  3904. INT F1 - AQUEDUCT, PIPELINE - GET DATA AREA ADDRESS
  3905. Return: AX:BX -> data area
  3906. Program: AQUEDUCT and PIPELINE are TSRs by James W. Birdsall to connect COM1
  3907.       and COM2 in software
  3908. Note:    The installation check consists of testing for the following signature
  3909.       immediately preceding the interrupt handler: "JWBtvv" where 't' is
  3910.       either "A" for AQUEDUCT or "P" for PIPELINE and "vv" is a two-digit
  3911.       version number
  3912. Index:    installation check;AQUEDUCT|installation check;PIPELINE
  3913. --------N-F1---------------------------------
  3914. INT F1 - NetWare Remote Boot - INSTALLATION CHECK (NOT A VECTOR!)
  3915. Note:    if this vector contains the value 5774654Eh ("NetW"), the remote boot
  3916.       BIOS extension is active, and access to the floppy disk is redirected
  3917.       to an image file in the server's SYS:LOGIN directory
  3918. SeeAlso: INT F2"NetWare",INT F3"NetWare",INT F4"NetWare"
  3919. --------v-F1---------------------------------
  3920. INT F1 - VIRUS - "Violetta" - ???
  3921. Note:    used but not chained by virus
  3922. SeeAlso: INT E0"VIRUS",INT FF"VIRUS"
  3923. ----------F101-------------------------------
  3924. INT F1 - Common ISDN API (CAPI) v1.1 - "API-REGISTER" - INITIALIZE CAPI
  3925.     AH = 01h
  3926.     ES:BX -> buffer for CAPI's use (see note)
  3927.     CX = minimum number of pending messages
  3928.     DX = maximum simultaneous Level 3 connections
  3929.     SI = maximum concurrent received B3 data blocks
  3930.     DI = maximum B3 data block size
  3931. Return: AX = CAPI-assigned application ID
  3932.         0000h on error
  3933.         BX = error number
  3934.             1001h registration error
  3935. Range:    INT 00 to INT FF, selectable by program parameter
  3936. Notes:    the caller is required to provide at least 512 bytes of stack space
  3937.     the CAPI interrupt handler begins with a header which is nearly
  3938.       identical to the IBM Interrupt Sharing Protocol header
  3939.       (see #1825 at INT 2D), except that the short jump instruction to
  3940.       a hardware reset handler at offset 09h is replaced by the signature
  3941.       bytes "IA"
  3942.     the maximum length of a message is fixed at 180 bytes; the standard
  3943.       document suggests using CX=10, DI=1, SI=7, and DI=130 for
  3944.       applications which use only a single connection and standard
  3945.       protocols
  3946.     the total size of the application-provided buffer must be at least
  3947.       180*CX + DX*SI*DI bytes
  3948. SeeAlso: AH=02h,INT F1/AL=01h
  3949. Index:    installation check;Common ISDN API
  3950. ----------F1--01-----------------------------
  3951. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_REGISTER" - INITIALIZE CAPI
  3952.     AL = 01h
  3953.     AH = CAPI version number * 10 (14h for v2.0)
  3954.     ES:BX -> buffer for CAPI's use (see note)
  3955.     CX = number of bytes for message buffer
  3956.     DX = maximum simultaneous logical (Level 3) connections
  3957.     SI = maximum concurrent received B3 data blocks (min. 2)
  3958.     DI = maximum B3 data block size (up to 2048 bytes)
  3959. Return: AX = CAPI-assigned application ID
  3960.         0000h on error
  3961.         BX = error number
  3962.             1001h registration error
  3963. Range:    INT 00 to INT FF, selectable by program parameter
  3964. Notes:    the caller is required to provide at least 512 bytes of stack space
  3965.     the CAPI interrupt handler begins with a header (see #3158) which is
  3966.       nearly identical to the IBM Interrupt Sharing Protocol header
  3967.       (see #1825 at INT 2D), except that the short jump instruction to
  3968.       a hardware reset handler at offset 09h is replaced by the signature
  3969.       bytes "IA"
  3970.     the standard document suggests using 1024 + (1024*DX) bytes for the
  3971.       message buffer for typical applications
  3972.     the total size of the application-provided buffer must be at least
  3973.       CX + DX*SI*DI bytes
  3974. SeeAlso: AH=01h,INT F1/AL=02h
  3975. Index:    installation check;Common ISDN API
  3976.  
  3977. Format of CAPI v2.0 interrupt handler entry point:
  3978. Offset    Size    Description    (Table 3158)
  3979.  00h  2 BYTEs    short jump to actual start of interrupt handler, immediately
  3980.           following this data block (EBh 0Fh)
  3981.  02h    DWORD    address of next handler in chain
  3982.  06h    WORD    signature 424Bh
  3983.  08h    BYTE    EOI flag (80h)
  3984.         80h primary hardware interrupt handler (will issue EOI)
  3985.  09h  2 BYTEs    reserved (0)
  3986.         (is short jump to hardware reset routine in ISP header)
  3987.  0Bh  4 BYTEs    signature "CAPI"
  3988.  0Fh  2 BYTEs    two-digit CAPI version number in ASCII ('20')
  3989. SeeAlso: #1825 at INT 2D
  3990. ----------F102-------------------------------
  3991. INT F1 - Common ISDN API (CAPI) v1.1 - "API-RELEASE" - UNREGISTER FROM CAPI
  3992.     AH = 02h
  3993.     DX = application ID (see AH=01h)
  3994. Return: AX = status (0000h,1002h) (see #3159)
  3995. Notes:    the caller is required to provide at least 512 bytes of stack space
  3996. SeeAlso: AH=01h,INT F1/AL=02h
  3997.  
  3998. (Table 3159)
  3999. Values for CAPI v1.1 error code:
  4000.  0000h    successful
  4001.  1001h    registration error
  4002.  1002h    invalid application ID
  4003.  1003h    message too small or incorrectly coded message number
  4004.  1004h    invalid command or subcommand
  4005.  1005h    message queue full
  4006.  1006h    message queue empty
  4007.  1007h    message(s) lost due to queue overflow
  4008.  1008h    error uninstalling
  4009. SeeAlso: #3160
  4010. ----------F1--02-----------------------------
  4011. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_RELEASE" - UNREGISTER FROM CAPI
  4012.     AL = 02h
  4013.     AH = CAPI version number * 10 (14h for v2.0)
  4014.     DX = application ID (see INT F1/AL=01h)
  4015. Return: AX = status (0000h,11xxh) (see #3160)
  4016. Notes:    the caller is required to provide at least 512 bytes of stack space
  4017. SeeAlso: AH=02h,INT F1/AL=01h,INT F1/AL=03h
  4018.  
  4019. (Table 3160)
  4020. Values for CAPI v2.0 error code:
  4021.  0000h    successful
  4022.  1001h    too many applications
  4023.  1002h    logical block size too small (must be at least 128 bytes)
  4024.  1003h    buffer > 64K
  4025.  1004h    message buffer too small (minimum 1024 bytes)
  4026.  1005h    too many logical connections requested
  4027.  1006h    reserved
  4028.  1007h    could not register because CAPI busy, try again
  4029.  1008h    OS resource unavailable (out of memory, etc.)
  4030.  1009h    COMMON-ISDN-API not installed
  4031.  100Ah    controller does not support external equipment
  4032.  100Bh    controller supports only external equipment
  4033.  1101h    invalid application ID
  4034.  1102h    illegal comand or subcommand, or message too short
  4035.  1103h    message queue full
  4036.  1104h    queue empty
  4037.  1105h    queue overflowed (message lost)
  4038.  1106h    unknown notification parameter
  4039.  1107h    could not accept message because CAPI busy, try again
  4040.  1108h    OS resource unavailable (out of memory, etc.)
  4041.  1109h    COMMON-ISDN-API not installed
  4042.  110Ah    controller does not support external equipment
  4043.  110Bh    controller supports only external equipment
  4044.  2001h    message not supported in current state
  4045.  2002h    illegal controller/PLCI/NCCI
  4046.  2003h    out of PLCI
  4047.  2004h    out of NCCI
  4048.  2005h    out of LISTEN
  4049.  2006h    out of FAX resources (T.30 protocol)
  4050.  2007h    illegal message parameter coding
  4051.  3001h    unsupported B1 protocol
  4052.  3002h    unsupported B2 protocol
  4053.  3003h    unsupported B3 protocol
  4054.  3004h    unsupported B1 protocol parameter
  4055.  3005h    unsupported B2 protocol parameter
  4056.  3006h    unsupported B3 protocol parameter
  4057.  3007h    unsupported B protocol combination
  4058.  3008h    NCPI not supported
  4059.  3009h    unknown CIP value
  4060.  300Ah    unsupported flags (reserved bits set)
  4061.  300Bh    unsupported facility
  4062.  300Ch    data length not supported by current protocol
  4063.  300Dh    reset procedure not supported by current protocol
  4064. SeeAlso: #3159
  4065. ----------F103-------------------------------
  4066. INT F1 - Common ISDN API (CAPI) v1.1 - "API-PUT-MESSAGE"
  4067.     AH = 03h
  4068.     DX = application ID (see AH=01h)
  4069.     ES:BX -> message to be sent (see #3161)
  4070. Return: AX = status (0000h,1002h,1003h,1004h,1005h) (see #3159)
  4071. Notes:    the caller is required to provide at least 512 bytes of stack space
  4072.     the message buffer may be reused as soon as this call returns
  4073. SeeAlso: AH=01h,AH=04h,INT F1/AL=03h
  4074.  
  4075. Format of CAPI message:
  4076. Offset    Size    Description    (Table 3161)
  4077.  00h    WORD    total message length, including header
  4078.  02h    WORD    application ID (see AH=01h)
  4079.  04h    BYTE    command (see #3162,#3163)
  4080.  05h    BYTE    subcommand (see #3162,#3163)
  4081.  06h    WORD    message sequence number
  4082.         0000h-7FFFh messages from application to CAPI (and replies)
  4083.         8000h-FFFFh messages from CAPI to application (and replies)
  4084.  08h    var    message data (max 172 bytes for v1.1 only)
  4085.  
  4086. (Table 3162)
  4087. Values for CAPI v1.1 message command/subcommand:
  4088. Cmd/SubCmd    Name            Description
  4089.  01h/00h    RESET-B3-REQ    request resetting of a Level 3 connection
  4090.  01h/01h    RESET-B3-CONF    confirm Level 3 connection reset
  4091.  01h/02h    RESET-B3-IND    indication from CAPI that Level 3 conn. reset
  4092.  01h/03h    RESET-B3-RESP    confirm receipt of RESET-B3-IND
  4093.  02h/00h    CONNECT-REQ        establish B-channel connection
  4094.  02h/01h    CONNECT-CONF    confirm start of connection establishment
  4095.  02h/02h    CONNECT-IND        indication from CAPI of incoming connection
  4096.  02h/03h    CONNECT-RESP    accept incoming connection
  4097.  03h/02h    CONNECT-ACTIVE-IND    indication that B-channel connection complete
  4098.  03h/03h    CONNECT-ACTIVE-RESP    confirm connection-complete indication
  4099.  04h/00h    DISCONNECT-REQ    request shutdown of B-channel connection
  4100.  04h/01h    DISCONNECT-CONF    confirm shutdown of B-channel connection
  4101.  04h/02h    DISCONNECT-IND    indication that B-channel is shutting down
  4102.  04h/03h    DISCONNECT-RESP    confirm that application knows of shutdown
  4103.  05h/00h    LISTEN-REQ        enable indication of incoming connections
  4104.  05h/01h    LISTEN-CONF        confirm enabling of incoming conn. indication
  4105.  06h/00h    GET-PARAMS-REQ    request B-channel parameters
  4106.  06h/01h    GET-PARAMS-CONF    return B-channel parameters
  4107.  07h/00h    INFO-REQ        set B-channel info to be signalled to app
  4108.  07h/01h    INFO-CONF        confirm B-channel info signalling
  4109.  07h/02h    INFO-IND        signal B-channel events to application
  4110.  07h/03h    INFO-CONF        confirm receipt of INFO-IND
  4111.  08h/00h    DATA-REQ        send D-channel data
  4112.  08h/01h    DATA-CONF        confirm receipt of DATA-REQ
  4113.  08h/02h    DATA-IND        receive D-channel data
  4114.  08h/03h    DATA-RESP        confirm receipt fo DATA-IND
  4115.  09h/00h    CONNECT-INFO-REQ    request connection information
  4116.  09h/01h    CONNECT-INFO-CONF    return connection information
  4117.  40h/00h    SELECT-B2-PROTOCOL-REQ  select Level 2 protocol
  4118.  40h/01h    SELECT-B2-PROTOCOL-CONF confirm receipt of SELECT-B2-PROTOCOL-REQ
  4119.  80h/00h    SELECT-B3-PROTOCOL-REQ  select Level 3 protocol
  4120.  80h/01h    SELECT-B3-PROTOCOL-CONF confirm receipt of SELECT-B3-PROTOCOL-REQ
  4121.  81h/00h    LISTEN-B3-REQ    enable notification of incoming Level 3 calls
  4122.  81h/01h    LISTEN-B3-CONF    confirm receipt of LISTEN-B3-REQ
  4123.  82h/00h    CONNECT-B3-REQ    establish Level 3 connection
  4124.  82h/01h    CONNECT-B3-CONF    confirm start of connection establishment
  4125.  82h/02h    CONNECT-B3-IND    indication of incoming Level 3 connection
  4126.  82h/03h    CONNECT-B3-RESP    accept incoming connection
  4127.  83h/02h    CONNECT-B3-ACTIVE-IND  indication that Level 3 connection complete
  4128.  83h/03h    CONNECT-B3-ACTIVE-RESP confirm connection-complete indication
  4129.  84h/00h    DISCONNECT-B3-REQ    request shutdown of Level 3 connection
  4130.  84h/01h    DISCONNECT-B3-CONF    confirm shutdown of Level 3 connection
  4131.  84h/02h    DISCONNECT-B3-IND    indication that Level 3 is shutting down
  4132.  84h/03h    DISCONNECT-B3-RESP    confirm that application knows of shutdown
  4133.  85h/00h    GET-B3-PARAMS-REQ    request Level 3 parameters
  4134.  85h/01h    GET-B3-PARAMS-CONF    return Level 3 parameters
  4135.  86h/00h    DATA-B3-REQ        send data on Level 3
  4136.  86h/01h    DATA-B3-CONF    confirm sending of Level 3 data
  4137.  86h/02h    DATA-B3-IND        indication of incoming Level 3 data
  4138.  86h/03h    DATA-B3-RESP    confirm receipt of Level 3 data
  4139.  87h/02h    HANDSET-IND        indication of Handset events
  4140.  87h/03h    HANDSET-RESP    confirm receipt of Handset event
  4141.  FFh/00h    MANUFACTURER-REQ    vendor-specific request
  4142.  FFh/01h    MANUFACTURER-CONF    vendor-specific request confirmation
  4143.  FFh/02h    MANUFACTURER-IND    vendor-specific notification
  4144.  FFh/03h    MANUFACTURER-RESP    vendor-specific notification confirmation
  4145. SeeAlso: #3161,#3163
  4146. ----------F1--03-----------------------------
  4147. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_PUT_MESSAGE"
  4148.     AL = 03h
  4149.     AH = CAPI version number * 10 (14h for v2.0)
  4150.     DX = application ID (see INT F1/AL=01h)
  4151.     ES:BX -> message to be sent (see #3161)
  4152. Return: AX = status (0000h,11xxh) (see #3160)
  4153. Notes:    the caller is required to provide at least 512 bytes of stack space
  4154.     the message buffer may be reused as soon as this call returns
  4155. SeeAlso: AH=03h,INT F1/AL=01h,INT F1/AL=04h
  4156.  
  4157. (Table 3163)
  4158. Values for CAPI v2.0 message command/subcommand:
  4159. Cmd/SubCmd    Name            Description
  4160.  01h/80h    ALERT_REQ        indicate compatibility with incoming calls
  4161.  01h/81h    ALERT_CONF        confirm receipt of ALERT_REQ
  4162.  02h/80h    CONNECT_REQ        establish B-channel connection
  4163.  02h/81h    CONNECT_CONF    confirm start of connection establishment
  4164.  02h/82h    CONNECT_IND        indication from CAPI of incoming connection
  4165.  02h/83h    CONNECT_RESP    accept incoming connection
  4166.  03h/82h    CONNECT_ACTIVE_IND    indication that B-channel connection complete
  4167.  03h/83h    CONNECT_ACTIVE_RESP    confirm connection-complete indication
  4168.  04h/80h    DISCONNECT_REQ    request shutdown of B-channel connection
  4169.  04h/81h    DISCONNECT_CONF    confirm shutdown of B-channel connection
  4170.  04h/82h    DISCONNECT_IND    indication that B-channel is shutting down
  4171.  04h/83h    DISCONNECT_RESP    confirm that application knows of shutdown
  4172.  05h/80h    LISTEN_REQ        enable signalling on incoming events
  4173.  05h/81h    LISTEN_CONF        confirm enabling of incoming event signalling
  4174.  08h/80h    INFO_REQ        send protocol information for physical connect
  4175.  08h/81h    INFO_CONF        confirm INFO_REQ
  4176.  08h/82h    INFO_IND        indicate event for physical connection
  4177.  08h/83h    INFO_CONF        confirm receipt of INFO_IND
  4178.  41h/80h    SELECT_B_PROTOCOL_REQ   change protocol on already-active connect
  4179.  41h/81h    SELECT_B_PROTOCOL_CONF  confirm receipt of SELECT_B_PROTOCOL_REQ
  4180.  80h/80h    FACILITY_REQ    control optional facilities
  4181.  80h/81h    FACILITY_CONF    confirm acceptance of FACILITY_REQ
  4182.  80h/82h    FACILITY_IND    indicate facility-dependent event
  4183.  80h/83h    FACILITY_RESP    confirm receipt of FACILITY_IND
  4184.  82h/80h    CONNECT_B3_REQ    establish Level 3 connection
  4185.  82h/81h    CONNECT_B3_CONF    confirm start of connection establishment
  4186.  82h/82h    CONNECT_B3_IND    indication of incoming Level 3 connection
  4187.  82h/83h    CONNECT_B3_RESP    accept incoming connection
  4188.  83h/82h    CONNECT_B3_ACTIVE_IND  indication that Level 3 connection complete
  4189.  83h/83h    CONNECT_B3_ACTIVE_RESP confirm connection-complete indication
  4190.  84h/80h    DISCONNECT_B3_REQ    request shutdown of Level 3 connection
  4191.  84h/81h    DISCONNECT_B3_CONF    confirm shutdown of Level 3 connection
  4192.  84h/82h    DISCONNECT_B3_IND    indication that Level 3 is shutting down
  4193.  84h/83h    DISCONNECT_B3_RESP    confirm that application knows of shutdown
  4194.  85h/80h    GET_B3_PARAMS_REQ    request Level 3 parameters
  4195.  85h/81h    GET_B3_PARAMS_CONF    return Level 3 parameters
  4196.  86h/80h    DATA_B3_REQ        send data on Level 3
  4197.  86h/81h    DATA_B3_CONF    confirm sending of Level 3 data
  4198.  86h/82h    DATA_B3_IND        indication of incoming Level 3 data
  4199.  86h/83h    DATA_B3_RESP    confirm receipt of Level 3 data
  4200.  87h/80h    RESET_B3_REQ    request resetting of a logical connection
  4201.  87h/81h    RESET_B3_CONF    confirm logical connection reset
  4202.  87h/82h    RESET_B3_IND    indication from CAPI that logical conn. reset
  4203.  87h/83h    RESET_B3_RESP    confirm receipt of RESET_B3_IND
  4204.  88h/82h    CONNECT_B3_T90_ACTIVE_IND  indicate switch from T.70 to T.90
  4205.  88h/83h    CONNECT_B3_T90_ACTIVE_RESP confirm receipt of T90_ACTIVE_IND
  4206.  FFh/80h    MANUFACTURER_REQ    vendor-specific request
  4207.  FFh/81h    MANUFACTURER_CONF    vendor-specific request confirmation
  4208.  FFh/82h    MANUFACTURER_IND    vendor-specific notification
  4209.  FFh/83h    MANUFACTURER_RESP    vendor-specific notification confirmation
  4210. SeeAlso: #3161,#3162
  4211. ----------F104-------------------------------
  4212. INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-MESSAGE"
  4213.     AH = 04h
  4214.     DX = application ID (see AH=01h)
  4215. Return: AX = status (0000h,1002h,1006h,1007h) (see #3159)
  4216.     ES:BX -> message if successful (see #3161)
  4217. Range:    INT 00 to INT FF, selectable by program parameter
  4218. Notes:    the caller is required to provide at least 512 bytes of stack space
  4219.     the returned message may be overwritten by the next call to this
  4220.       function
  4221. SeeAlso: AH=03h
  4222. ----------F1--04-----------------------------
  4223. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_MESSAGE"
  4224.     AL = 04h
  4225.     AH = CAPI version number * 10 (14h for v2.0)
  4226.     DX = application ID (see AH=01h)
  4227. Return: AX = status (0000h,11xxh) (see #3160)
  4228.     ES:BX -> message if successful (see #3161)
  4229. Range:    INT 00 to INT FF, selectable by program parameter
  4230. Notes:    the caller is required to provide at least 512 bytes of stack space
  4231.     the returned message may be overwritten by the next call to this
  4232.       function
  4233. SeeAlso: AH=04h,INT F1/AL=03h
  4234. ----------F105-------------------------------
  4235. INT F1 - Common ISDN API (CAPI) v1.1 - "API-SET-SIGNAL" - SIGNAL HANDLING
  4236.     AH = 05h
  4237.     DX = application ID (see AH=01h)
  4238.     ES:BX -> signal handler or 0000h:0000h to disable
  4239. Return: AX = status (0000h,1002h) (see #3159)
  4240. Notes:    the caller is required to provide at least 512 bytes of stack space
  4241.     the signal handler is called as though it were an interrupt, with
  4242.       interrupts disabled; the handler must preserve all registers and
  4243.       return with an IRET
  4244. SeeAlso: AH=01h
  4245. ----------F1--05-----------------------------
  4246. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_SET_SIGNAL" - SIGNAL HANDLING
  4247.     AL = 05h
  4248.     AH = CAPI version number * 10 (14h for v2.0)
  4249.     DX = application ID (see AH=01h)
  4250.     ES:BX -> signal handler or 0000h:0000h to disable
  4251.     SI:DI = parameter to pass to signal handler
  4252. Return: AX = status (0000h,11xxh) (see #3160)
  4253. Notes:    the caller is required to provide at least 512 bytes of stack space
  4254.     the signal handler is called as though it were an interrupt, with
  4255.       interrupts disabled and DX,SI,DI set as they were when this function
  4256.       was called; the handler must preserve all registers and return with
  4257.       an IRET
  4258.     the signal handler may call CAPI_PUT_MESSAGE, CAPI_GET_MESSAGE, and
  4259.       CAPI_SET_SIGNAL
  4260. SeeAlso: INT F1/AL=01h
  4261. ----------F106-------------------------------
  4262. INT F1 - Common ISDN API (CAPI) v1.1 - "API-DEINSTALL" - UNINSTALL
  4263.     AH = 06h
  4264.     BX = force flag
  4265.         0000h normal uninstall
  4266.         0001h forced uninstall
  4267. Return: AX = status (0000h,1008h) (see #3159)
  4268. Desc:    reset ISDN controller, close all ISDN Level 1 connections except for
  4269.       telephone connections
  4270. Notes:    the caller is required to provide at least 512 bytes of stack space
  4271. ----------F1F0-------------------------------
  4272. INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-MANUFACTURER"
  4273.     AH = F0h
  4274.     ES:BX -> 64-byte buffer for manufacturer identification information
  4275. Return: ES:BX buffer filled with ASCIZ idnetification string
  4276. Range:    INT 00 to INT FF, selectable by program parameter
  4277. Notes:    the caller is required to provide at least 512 bytes of stack space
  4278. SeeAlso: AH=01h,AH=F1h,AH=F2h,AH=FFh,INT F1/AL=F0h
  4279. ----------F1--F0-----------------------------
  4280. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_MANUFACTURER"
  4281.     AL = F0h
  4282.     AH = CAPI version number * 10 (14h for v2.0)
  4283.     ES:BX -> 64-byte buffer for manufacturer identification information
  4284. Return: ES:BX buffer filled with ASCIZ idnetification string
  4285. Range:    INT 00 to INT FF, selectable by program parameter
  4286. Notes:    the caller is required to provide at least 512 bytes of stack space
  4287. SeeAlso: AH=F0h,INT F1/AL=01h,INT F1/AL=F1h,INT F1/AL=F2h,INT F1/AL=FFh
  4288. ----------F1F1-------------------------------
  4289. INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-VERSION"
  4290.     AH = F1h
  4291.     ES:BX -> 64-byte buffer for CAPI version number
  4292. Return: ES:BX buffer filled with ASCIZ version string
  4293. Notes:    the caller is required to provide at least 512 bytes of stack space
  4294. SeeAlso: AH=01h,AH=F0h,AH=F2h,AH=FFh
  4295. ----------F1--F1-----------------------------
  4296. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_VERSION"
  4297.     AL = F1h
  4298.     AH = CAPI version number * 10 (14h for v2.0)
  4299. Return: AH = CAPI major version number
  4300.     AL = CAPI minor version number
  4301.     DH = vendor-specific major version
  4302.     DL = vendor-specific minor version
  4303. Notes:    the caller is required to provide at least 512 bytes of stack space
  4304. SeeAlso: AH=F1h,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F2h,INT F1/AL=FFh
  4305. ----------F1F2-------------------------------
  4306. INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-SERIAL-NUMBER"
  4307.     AH = F2h
  4308.     ES:BX -> 64-byte buffer for CAPI serial number
  4309. Return: ES:BX buffer filled with ASCIZ serial number (seven digits), empty
  4310.           string if no serial number
  4311. Notes:    the caller is required to provide at least 512 bytes of stack space
  4312. SeeAlso: AH=01h,AH=F0h,AH=F1h,AH=FFh
  4313. ----------F1--F2-----------------------------
  4314. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_SERIAL_NUMBER"
  4315.     AL = F2h
  4316.     AH = CAPI version number * 10 (14h for v2.0)
  4317.     ES:BX -> 64-byte buffer for CAPI serial number
  4318. Return: ES:BX buffer filled with ASCIZ serial number (seven digits), empty
  4319.           string if no serial number
  4320. Notes:    the caller is required to provide at least 512 bytes of stack space
  4321. SeeAlso: AH=F2h,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F1h,INT F1/AH=F3h
  4322. ----------F1--F3-----------------------------
  4323. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_PROFILE" - GET CAPABILITIES
  4324.     AL = F3h
  4325.     AH = CAPI version number * 10 (14h for v2.0)
  4326.     ES:BX -> 64-byte buffer for CAPI capabilities (see #3164)
  4327.     CX = controller number (01h-06h) or 0000h to get number of controllers
  4328. Return: AX = status (0000h,11xxh) (see #3160)
  4329.     ES:BX buffer filled if successful
  4330. Notes:    the caller is required to provide at least 512 bytes of stack space
  4331. SeeAlso: INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F2h,INT F1/AH=FFh
  4332.  
  4333. Format of CAPI v2.0 capabilities:
  4334. Offset    Size    Description    (Table 3164)
  4335.  00h    WORD    number of installed controllers
  4336.  02h    WORD    number of supported B channels
  4337.  04h    DWORD    global options (see #3165)
  4338.  08h    DWORD    B1 protocol support flags (see #3166)
  4339.  0Ch    DWORD    B2 protocol support flags (see #3167)
  4340.  10h    DWORD    B3 protocol support flags (see #3168)
  4341.  14h 24 BYTEs    reserved for CAPI use
  4342.  2Ch 20 BYTEs    vendor-specific information
  4343.  
  4344. Bitfields for CAPI v2.0 global options:
  4345. Bit(s)    Description    (Table 3165)
  4346.  0    internal controller supported
  4347.  1    external controller supported
  4348.  2    handset supported (only if bit 1 also set)
  4349.  3    DTMF supported
  4350.  4-31    reserved (0)
  4351. SeeAlso: #3164
  4352.  
  4353. Bitfields for CAPI v2.0 B1 protocol support:
  4354. Bit(s)    Description    (Table 3166)
  4355.  0    64k bps with HDLC framing (required, always set)
  4356.  1    64k bps bit-transparent operation with network byte framing
  4357.  2    V.110 asynchronous with start/stop byte framing
  4358.  3    V.110 synchronous with HDLC framing
  4359.  4    T.30 modem for group 3 FAX
  4360.  5    64k bps inverted with HDLC framing
  4361.  6    56k bps bit-transparent operation with network byte framing
  4362.  7-31    reserved (0)
  4363. SeeAlso: #3164
  4364.  
  4365. Bitfields for CAPI v2.0 B2 protocol support:
  4366. Bit(s)    Description    (Table 3167)
  4367.  0    ISO 7776 (X.75 SLP) (required, always set)
  4368.  1    transparent
  4369.  2    SDLC
  4370.  3    Q.921 LAPD (D-channel X.25)
  4371.  4    T.30 for group 3 FAX
  4372.  5    point-to-point protocol (PPP)
  4373.  6    transparent (ignoring B1 framing errors)
  4374.  7-31    reserved (0)
  4375. SeeAlso: #3164
  4376.  
  4377. Bitfields for CAPI v2.0 B3 protocol support:
  4378. Bit(s)    Description    (Table 3168)
  4379.  0    transparent (required, always set)
  4380.  1    T.90NL with T.70NL compatibility
  4381.  2    ISO 8208 (X.25 DTE-DTE)
  4382.  3    X.25 DCE
  4383.  4    T.30 for group 3 FAX
  4384.  5-31    reserved (0)
  4385. SeeAlso: #3164
  4386. ----------F1FF-------------------------------
  4387. INT F1 - Common ISDN API (CAPI) v1.1 - "API-MANUFACTURER" - VENDOR-SPECIFIC
  4388.     AH = FFh
  4389.     other registers vendor-specific
  4390. Return: registers vendor-specific
  4391. Range:    INT 00 to INT FF, selectable by program parameter
  4392. Notes:    the caller is required to provide at least 512 bytes of stack space
  4393. SeeAlso: AH=01h,AH=F0h,AH=F1h,AH=F2h,INT F1/AH=FFh
  4394. ----------F1--FF-----------------------------
  4395. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_MANUFACTURER" - VENDOR-SPECIFIC
  4396.     AL = FFh
  4397.     AH = CAPI version number * 10 (14h for v2.0)
  4398.     other registers vendor-specific
  4399. Return: registers vendor-specific
  4400. Range:    INT 00 to INT FF, selectable by program parameter
  4401. Notes:    the caller is required to provide at least 512 bytes of stack space
  4402. SeeAlso: AH=FFh,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F1h,INT F1/AL=F2h
  4403. --------*-F2---------------------------------
  4404. INT F2 - reserved for user interrupt
  4405. --------s-F2---------------------------------
  4406. INT F2 - Andy C. McGuire SPEECH.COM/SAY.COM
  4407. SeeAlso: INT F1"SPEECH"
  4408. --------N-F2---------------------------------
  4409. INT F2 - NetWare Remote Boot - ORIGINAL INT 13
  4410. SeeAlso: INT F1"NetWare",INT F3"NetWare",INT F4"NetWare"
  4411. ----------F2---------------------------------
  4412. INT F2 - ICCTSR 1.0 - ImageCapture COLOR Developer's Kit - API
  4413.     AH = function number (see #3169)
  4414.     ???
  4415. Return: ???
  4416. Program: ImageCapture is a product of International Computers
  4417. SeeAlso: INT F3"ICCTSR"
  4418.  
  4419. (Table 3169)
  4420. Values for ImageCapture function:
  4421.  01h    power up
  4422.  02h    power down
  4423.  03h    set controls
  4424.  04h    capture image
  4425.  05h    display image
  4426.  06h    read file
  4427.  07h    write file
  4428.  08h    write array
  4429.  09h    read pixel
  4430.  0Ah    write pixel
  4431.  0Bh    check if VGA present
  4432.  0Ch    set video mode
  4433.  0Dh    check for keystroke
  4434.  0Eh    delay
  4435. --------*-F3---------------------------------
  4436. INT F3 - reserved for user interrupt
  4437. --------s-F3---------------------------------
  4438. INT F3 - SoundBlaster - POINTER TO ECHO VALUE
  4439. Note:    this is not a vector, but a pointer to a DWORD containing the echo
  4440.       value selected with SET-ECHO.EXE
  4441. SeeAlso: INT 2F/AX=FBFBh
  4442. ----------F3---------------------------------
  4443. INT F3 - ICCTSR 1.0 - HANDSHAKE ID VECTOR
  4444. Program: ImageCapture is a product of International Computers
  4445. SeeAlso: INT F2"ICCTSR"
  4446. --------N-F3---------------------------------
  4447. INT F3 - NetWare Remote Boot - BOOT ROM'S INT 13 HANDLER
  4448. SeeAlso: INT F1"NetWare",INT F2"NetWare",INT F4"NetWare"
  4449. --------*-F4---------------------------------
  4450. INT F4 - reserved for user interrupt
  4451. --------T-F4---------------------------------
  4452. INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
  4453. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT FE"DoubleDOS"
  4454. --------N-F4---------------------------------
  4455. INT F4 - NetWare Remote Boot - ???
  4456. SeeAlso: INT F1"NetWare",INT F2"NetWare",INT F3"NetWare"
  4457. --------*-F5---------------------------------
  4458. INT F5 - reserved for user interrupt
  4459. --------T-F5---------------------------------
  4460. INT F5 - DoubleDOS - ???
  4461. --------*-F6---------------------------------
  4462. INT F6 - reserved for user interrupt
  4463. --------T-F6---------------------------------
  4464. INT F6 - DoubleDOS - ???
  4465. --------*-F7---------------------------------
  4466. INT F7 - reserved for user interrupt
  4467. --------T-F7---------------------------------
  4468. INT F7 - DoubleDOS - ???
  4469. ----------F700-------------------------------
  4470. INT F7 - FSBBS 2.0 - CONFIGURATION RECORD
  4471.     AH = 00h
  4472.     AL = function
  4473.         00h get configuration record
  4474.         Return: DS:DX -> configuration record
  4475.         01h set configuration record
  4476.         02h get path for option
  4477.         DS:DX -> option name
  4478.         Return: DS:DX -> path
  4479.         03h determine whether configuration record set
  4480.         Return: AX = status
  4481.                 0000h set
  4482.                 0001h not yet set
  4483.         04h get link state
  4484.         Return: AX = state
  4485.                 0000h unlinked
  4486.                 0001h linked
  4487. Notes:    this information is preliminary and still subject to change
  4488.     all of the INT F7 calls for FSBBS are used for interprogram
  4489.       communication between the BBS kernel and the programs it spawns
  4490. SeeAlso: AH=01h
  4491. ----------F701-------------------------------
  4492. INT F7 - FSBBS 2.0 - USER RECORD
  4493.     AH = 01h
  4494.     AL = function
  4495.         00h get user record for user currently online
  4496.         Return: DS:DX -> user record
  4497.         01h set user record
  4498.         DS:DX -> user record
  4499. SeeAlso: AH=00h,AH=02h
  4500. ----------F702-------------------------------
  4501. INT F7 - FSBBS 2.0 - GET ACCOUNT NAME
  4502.     AH = 02h
  4503. Return: DS:DX -> 8-character blank-padded account name
  4504. SeeAlso: AH=01h
  4505. ----------F703-------------------------------
  4506. INT F7 - FSBBS 2.0 - TERMINAL NUMBER
  4507.     AH = 03h
  4508.     AL = function
  4509.         00h get terminal index number
  4510.         Return: DX = index number
  4511.         01h set terminal index number
  4512.         DX = terminal index
  4513. ----------F704-------------------------------
  4514. INT F7 - FSBBS 2.0 - PASSDATA BUFFER
  4515.     AH = 04h
  4516.     AL = function
  4517.         00h get PassData buffer contents
  4518.         DS:DX -> buffer for PassData contents
  4519.         01h set PassData contents
  4520.         DS:DX -> buffer containing new PassData
  4521.         CH = length of data in buffer
  4522. ----------F705-------------------------------
  4523. INT F7 - FSBBS 2.0 - TIMER FUNCTIONS
  4524.     AH = 05h
  4525.     AL = function
  4526.         00h get time remaining
  4527.         Return: DX = number of minutes remaining
  4528.         01h get current time
  4529.         Return: DS:DX -> 8-character time string
  4530.         02h increment time
  4531.         DX = number of additional minutes
  4532.         03h decrement time
  4533.         DX = number of minutes
  4534. SeeAlso: AH=06h
  4535. ----------F706-------------------------------
  4536. INT F7 - FSBBS 2.0 - FUNCTION AVAILABILITY
  4537.     AH = 06h
  4538.     AL = function
  4539.         00h determine whether function is available
  4540.         DX = index of function
  4541.         01h set function availability
  4542.         DX = index of function
  4543.         ???
  4544. SeeAlso: AH=05h,AH=07h
  4545. ----------F707-------------------------------
  4546. INT F7 - FSBBS 2.0 - DUMP FUNCTIONS
  4547.     AH = 07h
  4548.     AL = function
  4549.         00h get current dump mode
  4550.         Return: DL = mode
  4551.         01h set dump mode
  4552.         DL = mode
  4553. SeeAlso: AH=06h
  4554. --------*-F8---------------------------------
  4555. INT F8 - reserved for user interrupt
  4556. --------h-F8---------------------------------
  4557. INT F8 - Sanyo MBC-550 - IRQ0 - 100 HZ INTERRUPT
  4558. SeeAlso: INT 08"IRQ0",INT F9"Sanyo",INT FA"Sanyo"
  4559. --------T-F8---------------------------------
  4560. INT F8 - DoubleDOS - ???
  4561. --------*-F9---------------------------------
  4562. INT F9 - reserved for user interrupt
  4563. --------T-F9---------------------------------
  4564. INT F9 - DoubleDOS - ???
  4565. --------h-F9---------------------------------
  4566. INT F9 - Sanyo MBC-550 - IRQ1 - ???
  4567. SeeAlso: INT 09"IRQ1",INT F8"Sanyo",INT FA"Sanyo"
  4568. --------*-FA---------------------------------
  4569. INT FA - reserved for user interrupt
  4570. --------h-FA---------------------------------
  4571. INT FA - Sanyo MBC-550 - IRQ2 - SERIAL PORT USART INTERRUPT
  4572. Note:    this vector is not used on the Tandy 1000TL
  4573. SeeAlso: INT 0A"IRQ2",INT F9"Sanyo",INT FB"Sanyo"
  4574. --------T-FA---------------------------------
  4575. INT FA - DoubleDOS - TURN OFF TIMESHARING
  4576. SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"
  4577. --------*-FB---------------------------------
  4578. INT FB - reserved for user interrupt
  4579. --------h-FB---------------------------------
  4580. INT FB - Sanyo MBC-550 - IRQ3 - KEYBOARD USART RECEIVE INTERRUPT
  4581. SeeAlso: INT 0B"IRQ3",INT FA"Sanyo",INT FC"Sanyo"
  4582. --------T-FB---------------------------------
  4583. INT FB - DoubleDOS - TURN ON TIMESHARING
  4584. SeeAlso: INT 21/AH=EBh"DoubleDOS",INT FA"DoubleDOS"
  4585. --------*-FC---------------------------------
  4586. INT FC - reserved for user interrupt
  4587. --------T-FC---------------------------------
  4588. INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
  4589. Return: ES = segment of display buffer
  4590. Desc:    determine the address of the virtual screen to which the program
  4591.       should write instead of the actual video memory, so that the
  4592.       multitasked programs do not interfere with each other's output
  4593. Note:    the display buffer may be moved if multitasking is enabled
  4594. SeeAlso: INT 21/AH=ECh"DoubleDOS",INT FB"DoubleDOS"
  4595. --------h-FC---------------------------------
  4596. INT FC - Sanyo MBC-550 - IRQ4 - ???
  4597. SeeAlso: INT 0C"IRQ4",INT FB"Sanyo",INT FD"Sanyo"
  4598. --------*-FD---------------------------------
  4599. INT FD - reserved for user interrupt
  4600. --------T-FD---------------------------------
  4601. INT FD - DoubleDOS - ???
  4602. --------h-FD---------------------------------
  4603. INT FD - Sanyo MBC-550 - IRQ5 - ???
  4604. SeeAlso: INT 0D"IRQ5",INT FC"Sanyo",INT FE"Sanyo"
  4605. --------S-FD---------------------------------
  4606. INT FD - TFPCX - INSTALLATION CHECK
  4607.     AH = function (see separate entries below)
  4608. Program: TFPCX is an interface between modem and terminal program for packet-
  4609.       radio communications
  4610. Notes:    the installation check consists of testing for the string "N5NX" three
  4611.       bytes beyond the interrupt handler; INT FD is the default, but may
  4612.       be changed, so the full installation check consists of scanning
  4613.       for the signature
  4614.     TFPCX returns AX=FFFFh on any unsupported function call
  4615. SeeAlso: AH=01h,AH=03h,AH=FEh
  4616. --------S-FD01-------------------------------
  4617. INT FD - TFPCX - TEST FOR CHARACTER WAITING
  4618.     AH = 01h
  4619. Return: AX = status
  4620.         0000h no characters waiting
  4621.         0001h character available for input
  4622. Program: TFPCX is an interface between modem and terminal program for packet-
  4623.       radio communications
  4624. SeeAlso: AH=02h
  4625. --------S-FD02-------------------------------
  4626. INT FD - TFPCX - GET CHARACTER
  4627.     AH = 02h
  4628. Return: AL = character
  4629. Notes:    this call is only allowed if AH=01h indicated that a character is
  4630.       available
  4631.     all available characters should be read before sending any additional
  4632.       characters
  4633. SeeAlso: AH=01h,AH=03h
  4634. --------S-FD03-------------------------------
  4635. INT FD - TFPCX - OUTPUT CHARACTER
  4636.     AH = 03h
  4637.     AL = character to send
  4638. Return: nothing
  4639. SeeAlso: AH=02h
  4640. --------S-FDFE-------------------------------
  4641. INT FD - TFPCX - GET VERSION
  4642.     AH = FEh
  4643. Return: AH = major version
  4644.     AL = minor version
  4645. Program: TFPCX is an interface between modem and terminal program for packet-
  4646.       radio communications
  4647. SeeAlso: AH=01h,AH=03h
  4648. --------B-FE---------------------------------
  4649. INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
  4650. Note:    the ROM BIOS uses 0030h:0100h as the initial stack on startup, which
  4651.       is the last fourth of the interrupt vector table.  If the processor
  4652.       is returned to real mode via a hardware reset (the only possibility
  4653.       on an 80286, though there are a number of ways of generating one),
  4654.       then the BIOS startup code stacks three words on its scratch stack
  4655.       before determining that a return to real mode has been requested.
  4656.       As a result, INT FE and INT FF are corrupted.
  4657. SeeAlso: INT FF"XT286"
  4658. --------T-FE---------------------------------
  4659. INT FE - DoubleDOS - GIVE UP TIME
  4660.     AL = number of 55ms time slices to give away
  4661. Return: after other program (if active) has run
  4662. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F4"DoubleDOS"
  4663. --------G-FE---------------------------------
  4664. INT FE - Turbo Debugger 8086 v2.5+ - OVERLAY MANAGER
  4665. SeeAlso: INT 3F
  4666. --------h-FE---------------------------------
  4667. INT FE - Sanyo MBC-550 - IRQ6 - ???
  4668. SeeAlso: INT 0E"IRQ6",INT FD"Sanyo",INT FF"Sanyo"
  4669. --------B-FF---------------------------------
  4670. INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
  4671. Note:    (see INT FE"XT286")
  4672. SeeAlso: INT FE"XT286"
  4673. --------b-FF---------------------------------
  4674. INT FF - Z100 - WARM BOOT
  4675. SeeAlso: INT 40"Z100"
  4676. --------h-FF---------------------------------
  4677. INT FF - Sanyo MBC-550 - IRQ7 - ???
  4678. SeeAlso: INT 0F"IRQ7",INT FE"Sanyo"
  4679. --------Q-FF---------------------------------
  4680. INT FF U - QEMM-386.SYS v6.0+ - internal
  4681. Notes:    requires that a byte in the conventional-memory stub be set to the
  4682.       desired function number (00h through 0Ch)
  4683. SeeAlso: #3170
  4684.  
  4685. (Table 3170)
  4686. Values for QEMM internal functions:
  4687.  00h    reflect back to Virtual86-mode interrupt handler (default)
  4688.  01h    ???
  4689.  02h    access DR7???
  4690.  03h    QPI upcall (see INT 67/AH=3Fh)
  4691.  04h    ???
  4692.  05h    ???
  4693.  06h    INT 15/AH=87h
  4694.  07h    EMS services (see INT 67/AH=40h,INT 67/AH=5Dh)
  4695.  08h    ???
  4696.  09h    QEMM exception handler
  4697.  0Ah    XMS services (see INT 2F/AX=4310h)
  4698.  0Bh    Virtual DMA Services (see INT 4B/AX=8102h)
  4699.  0Ch    ???
  4700. --------v-FF---------------------------------
  4701. INT FF - VIRUS - "Violetta" - ???
  4702. Note:    used but not chained by virus
  4703. SeeAlso: INT E0"VIRUS",INT F1"VIRUS"
  4704. --------V-FF----BX0000-----------------------
  4705. INT FF - PC/FORTH - GRAPHICS API - VIDEO STATUS CHANGE
  4706.     BX = 0000h
  4707.     DS:SI -> FORTH program counter
  4708.     SS:BP -> FORTH parameter stack
  4709.     SS:SP -> FORTH return stack
  4710.     DS:DX -> FORTH video parameter area
  4711. Desc:    called to inform graphics driver of any status changes such as video
  4712.       mode changes, character color changes, graphics XOR mode turned on
  4713.       or off, etc.
  4714. --------V-FF---------------------------------
  4715. INT FF - PC/FORTH - GRAPHICS API
  4716.     BX = function number
  4717.         0001h function REDRAW
  4718.         0002h function !PEL
  4719.         0003h function @PEL
  4720.         0004h function LINE
  4721.         0005h function ARC
  4722.         0006h function @BLOCK
  4723.         0007h function !BLOCK
  4724.         0008h function FLOOD
  4725.     DS:SI -> FORTH program counter
  4726.     SS:BP -> FORTH parameter stack
  4727.     SS:SP -> FORTH return stack
  4728.     details of parameters not available
  4729. --------!---Admin----------------------------
  4730. Highest Table Number = 3177
  4731. --------!---FILELIST-------------------------
  4732. Please redistribute all of the files comprising the interrupt list (listed at
  4733. the beginning of the list and in INTERRUP.1ST) unmodified as a group, in a
  4734. quartet of archives named INTER49A through INTER49D (preferably the original
  4735. authenticated PKZIP archives), the utility programs in a fifth archive
  4736. called INTER49E.ZIP, and the WinHelp-related programs in a sixth archive
  4737. named INTER49F.ZIP.
  4738.  
  4739. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996 Ralf Brown
  4740. --------!---CONTACT_INFO---------------------
  4741. Internet: ralf@pobox.com (currently forwards to ralf@telerama.lm.com)
  4742. UUCP: {uunet,harvard}!pobox.com!ralf
  4743. FIDO: Ralf Brown 1:129/26.1
  4744.     or post a message to me in the DR_DEBUG echo (I probably won't see it
  4745.     unless you address it to me)
  4746. CIS:  >INTERNET:ralf@pobox.com
  4747.